• Erik Kurzinger's avatar
    xwayland/eglstream: flush stream after eglSwapBuffers · 7515c23a
    Erik Kurzinger authored and Olivier Fourdan's avatar Olivier Fourdan committed
    When eglSwapBuffers inserts a new frame into a window's stream, there may be a
    delay before the state of the consumer end of the stream is updated to reflect
    this. If the subsequent wl_surface_attach, wl_surface_damage, wl_surface_commit
    calls are received by the compositor before then, it will (typically) re-use
    the previous frame acquired from the stream instead of the latest one.
    
    This can leave the window displaying out-of-date contents, which might never be
    updated thereafter.
    
    To fix this, after calling eglSwapBuffers, xwl_glamor_eglstream_post_damage
    should call eglStreamFlushNV. This call will block until it can be guaranteed
    that the state of the consumer end of the stream has been updated to reflect
    that a new frame is available.
    
    Closes: #1171
    
    Signed-off-by: Erik Kurzinger's avatarErik Kurzinger <ekurzinger@nvidia.com>
    7515c23a
xwayland-glamor-eglstream.c 41.7 KB