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
> > 
> > 
> 

Reply via email to