winewayland.drv: Handle resizing of OpenGL content.
Wayland surfaces don't have an inherent native size that the EGL
implementation can track, so we need to explicitly tell EGL about changes
in the native size with wl_egl_window_resize.
Since the resize can be triggered outside the GL render thread, and
wl_egl_window_resize is not thread safe (with respect to other EGL/GL
calls), we cannot call it directly at will. Instead we mark the
wayland_gl_drawable as resized, and actually call the
wl_egl_window_resize function from the thread in which the respective
drawable is current.
Note that the first EGL/GL operation that requires a new backbuffer
latches whatever native size we have reported, until the next
eglSwapBuffers. In order to ensure the current native size is applied as
soon as possible (to avoid glitches), we check for and apply resizes at
a few extra points where a new backbuffer may be required (e.g.,
glClear, eglMakeCurrent).
Showing
Please
register
or
sign in
to comment