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 > > -- Marc-André Lureau