mirror of https://github.com/xemu-project/xemu.git
ui/gtk: Draw guest frame at refresh cycle
Draw routine needs to be manually invoked in the next refresh if there is a scanout blob from the guest. This is to prevent a situation where there is a scheduled draw event but it won't happen bacause the window is currently in inactive state (minimized or tabified). If draw is not done for a long time, gl_block timeout and/or fence timeout (on the guest) will happen eventually. v2: Use gd_gl_area_draw(vc) in gtk-gl-area.c Suggested-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Marc-André Lureau <marcandre.lureau@redhat.com> Cc: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20240426225059.3871283-1-dongwon.kim@intel.com>
This commit is contained in:
parent
41582637b1
commit
77bf310084
|
@ -150,6 +150,7 @@ void gd_egl_refresh(DisplayChangeListener *dcl)
|
|||
vc, vc->window ? vc->window : vc->gfx.drawing_area);
|
||||
|
||||
if (vc->gfx.guest_fb.dmabuf && vc->gfx.guest_fb.dmabuf->draw_submitted) {
|
||||
gd_egl_draw(vc);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -126,6 +126,7 @@ void gd_gl_area_refresh(DisplayChangeListener *dcl)
|
|||
gd_update_monitor_refresh_rate(vc, vc->window ? vc->window : vc->gfx.drawing_area);
|
||||
|
||||
if (vc->gfx.guest_fb.dmabuf && vc->gfx.guest_fb.dmabuf->draw_submitted) {
|
||||
gd_gl_area_draw(vc);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue