Hi Marc-André, I am WIP on a patch set including a successor of this one as well as other fixes, doc and refactoring regarding scale handling. Hopefully the patch set would make scale handling into good shape. I will send the patch set out ASAP.
Best regards, Weifeng On Mon, 2025-04-28 at 15:23 +0400, Marc-André Lureau wrote: > Hi > > On Sat, Apr 19, 2025 at 1:51 PM Weifeng Liu <weifeng.li...@gmail.com> wrote: > > > > On startup, scale_x and scale_y were set to 1 that didn't reflect the > > real situation of the scan-out, resulting in incorrect cursor > > coordinates to be sent when moving the mouse pointer. Simply updating > > the scales before rendering the image fixes this issue. > > > > Cc: hikalium <hikal...@hikalium.com> > > Cc: Alexander Orzechowski <orzechowski.alexan...@gmail.com> > > Cc: Gerd Hoffmann <kra...@redhat.com> > > Signed-off-by: Weifeng Liu <weifeng.li...@gmail.com> > > > Tested-by: Marc-André Lureau <marcandre.lur...@redhat.com> > > (Hopefully someone has enough motivation to actually understand this > change better - otherwise I'll simply queue it?) > > > --- > > ui/gtk-gl-area.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c > > index 2c9a0db425..01235f876a 100644 > > --- a/ui/gtk-gl-area.c > > +++ b/ui/gtk-gl-area.c > > @@ -42,6 +42,7 @@ void gd_gl_area_draw(VirtualConsole *vc) > > #ifdef CONFIG_GBM > > QemuDmaBuf *dmabuf = vc->gfx.guest_fb.dmabuf; > > #endif > > + int fbw, fbh; > > int ww, wh, ws, y1, y2; > > > > if (!vc->gfx.gls) { > > @@ -53,6 +54,11 @@ void gd_gl_area_draw(VirtualConsole *vc) > > ww = gtk_widget_get_allocated_width(vc->gfx.drawing_area) * ws; > > wh = gtk_widget_get_allocated_height(vc->gfx.drawing_area) * ws; > > > > + fbw = surface_width(vc->gfx.ds); > > + fbh = surface_height(vc->gfx.ds); > > + vc->gfx.scale_x = (double)ww / fbw / ws; > > + vc->gfx.scale_y = (double)wh / fbh / ws; > > + > > if (vc->gfx.scanout_mode) { > > if (!vc->gfx.guest_fb.framebuffer) { > > return; > > -- > > 2.49.0 > > > > >