mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
ui/gtk: Update scales in fixed-scale mode when rendering GL area
When gl=on, scale_x and scale_y were set to 1 on startup that didn't reflect the real situation of the scan-out in free scale mode, resulting in incorrect cursor coordinates to be sent when moving the mouse pointer. Simply updating the scales before rendering the image fixes this issue. Signed-off-by: Weifeng Liu <weifeng.liu.z@gmail.com> Message-ID: <20250511073337.876650-5-weifeng.liu.z@gmail.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
a196654481
commit
8fb072472c
1 changed files with 10 additions and 2 deletions
|
@ -43,6 +43,8 @@ void gd_gl_area_draw(VirtualConsole *vc)
|
|||
QemuDmaBuf *dmabuf = vc->gfx.guest_fb.dmabuf;
|
||||
#endif
|
||||
int pw, ph, gs, y1, y2;
|
||||
int ww, wh;
|
||||
int fbw, fbh;
|
||||
|
||||
if (!vc->gfx.gls) {
|
||||
return;
|
||||
|
@ -50,8 +52,14 @@ void gd_gl_area_draw(VirtualConsole *vc)
|
|||
|
||||
gtk_gl_area_make_current(GTK_GL_AREA(vc->gfx.drawing_area));
|
||||
gs = gdk_window_get_scale_factor(gtk_widget_get_window(vc->gfx.drawing_area));
|
||||
pw = gtk_widget_get_allocated_width(vc->gfx.drawing_area) * gs;
|
||||
ph = gtk_widget_get_allocated_height(vc->gfx.drawing_area) * gs;
|
||||
fbw = surface_width(vc->gfx.ds);
|
||||
fbh = surface_height(vc->gfx.ds);
|
||||
ww = gtk_widget_get_allocated_width(vc->gfx.drawing_area);
|
||||
wh = gtk_widget_get_allocated_height(vc->gfx.drawing_area);
|
||||
pw = ww * gs;
|
||||
ph = wh * gs;
|
||||
|
||||
gd_update_scale(vc, ww, wh, fbw, fbh);
|
||||
|
||||
if (vc->gfx.scanout_mode) {
|
||||
if (!vc->gfx.guest_fb.framebuffer) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue