Skip to content
  • Dongwon Kim's avatar
    64f1359b
    ui/gtk: prevent ui lock up when dpy_gl_update called again before current draw event occurs · 64f1359b
    Dongwon Kim authored
    
    
    A warning, "qemu: warning: console: no gl-unblock within" followed by
    guest scanout lockup can happen if dpy_gl_update is called in a row
    and the second call is made before gd_draw_event scheduled by the first
    call is taking place. This is because draw call returns without decrementing
    gl_block ref count if the dmabuf was already submitted as shown below.
    
    (gd_gl_area_draw/gd_egl_draw)
    
            if (dmabuf) {
                if (!dmabuf->draw_submitted) {
                    return;
                } else {
                    dmabuf->draw_submitted = false;
                }
            }
    
    So it should not schedule any redundant draw event in case draw_submitted is
    already set in gd_egl_fluch/gd_gl_area_scanout_flush.
    
    Cc: Gerd Hoffmann <kraxel@redhat.com>
    Cc: Vivek Kasireddy <vivek.kasireddy@intel.com>
    Signed-off-by: default avatarDongwon Kim <dongwon.kim@intel.com>
    Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
    Message-Id: <20221021192315.9110-1-dongwon.kim@intel.com>
    Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
    64f1359b
    ui/gtk: prevent ui lock up when dpy_gl_update called again before current draw event occurs
    Dongwon Kim authored
    
    
    A warning, "qemu: warning: console: no gl-unblock within" followed by
    guest scanout lockup can happen if dpy_gl_update is called in a row
    and the second call is made before gd_draw_event scheduled by the first
    call is taking place. This is because draw call returns without decrementing
    gl_block ref count if the dmabuf was already submitted as shown below.
    
    (gd_gl_area_draw/gd_egl_draw)
    
            if (dmabuf) {
                if (!dmabuf->draw_submitted) {
                    return;
                } else {
                    dmabuf->draw_submitted = false;
                }
            }
    
    So it should not schedule any redundant draw event in case draw_submitted is
    already set in gd_egl_fluch/gd_gl_area_scanout_flush.
    
    Cc: Gerd Hoffmann <kraxel@redhat.com>
    Cc: Vivek Kasireddy <vivek.kasireddy@intel.com>
    Signed-off-by: default avatarDongwon Kim <dongwon.kim@intel.com>
    Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
    Message-Id: <20221021192315.9110-1-dongwon.kim@intel.com>
    Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Loading