mirror of
https://github.com/qemu/qemu.git
synced 2026-04-05 21:46:25 +00:00
ui/gtk-egl: Ensure EGL surface is available before drawing
The EGL surface and context are destroyed when a new GTK window is created. We must ensure these are recreated and initialized before any rendering happens in gd_egl_refresh. Currently, the check for a pending draw is performed before the surface initialization block. This can result in an attempt to draw when the EGL surface (vc->gfx.esurface) is not yet available. This patch moves the drawing check after the surface initialization to ensure a valid surface exists before rendering in gd_egl_refresh. Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20260303011151.1925827-1-dongwon.kim@intel.com>
This commit is contained in:
committed by
Marc-André Lureau
parent
b6506de40f
commit
c141bcb6af
12
ui/gtk-egl.c
12
ui/gtk-egl.c
@@ -152,12 +152,6 @@ void gd_egl_refresh(DisplayChangeListener *dcl)
|
||||
gd_update_monitor_refresh_rate(
|
||||
vc, vc->window ? vc->window : vc->gfx.drawing_area);
|
||||
|
||||
if (vc->gfx.guest_fb.dmabuf &&
|
||||
qemu_dmabuf_get_draw_submitted(vc->gfx.guest_fb.dmabuf)) {
|
||||
gd_egl_draw(vc);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!vc->gfx.esurface) {
|
||||
gd_egl_init(vc);
|
||||
if (!vc->gfx.esurface) {
|
||||
@@ -176,6 +170,12 @@ void gd_egl_refresh(DisplayChangeListener *dcl)
|
||||
#endif
|
||||
}
|
||||
|
||||
if (vc->gfx.guest_fb.dmabuf &&
|
||||
qemu_dmabuf_get_draw_submitted(vc->gfx.guest_fb.dmabuf)) {
|
||||
gd_egl_draw(vc);
|
||||
return;
|
||||
}
|
||||
|
||||
graphic_hw_update(dcl->con);
|
||||
|
||||
if (vc->gfx.glupdates) {
|
||||
|
||||
Reference in New Issue
Block a user