• Alexandros Frantzis's avatar
    winewayland.drv: Handle resizing of OpenGL content. · 4bba16fd
    Alexandros Frantzis authored
    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).
    4bba16fd
wayland_surface.c 29.5 KB