xwayland/eglstream: flush stream after eglSwapBuffers

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: xorg/xserver#1171

Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
5 jobs for xwayland-eglstream-glx in 5 minutes and 8 seconds (queued for 1 second)
Status Name Job ID Coverage
  Docker Image
passed debian-buster #9861949

00:00:15

 
  Build And Test
passed autotools #9861950

00:04:53

passed meson #9861951

00:01:36

passed meson-noglamor #9861952

00:02:02

passed mingw-cross-build #9861953

00:01:19