Skip to content
  • Vlad Zahorodnii's avatar
    qpa: Create a pbuffer for internal windows · 3dcc4ebd
    Vlad Zahorodnii authored
    If the surfaceless context extension is unsupported by the underlying
    platform, the QPA will use the EGLSurface of the first output to make
    OpenGL contexts current.
    
    If an internal window attempts to make an OpenGL context current while
    compositing is being restarted, for example it's typically the case with
    the composited outline visual, QPA will either try to make the context
    current with a no longer valid EGLSurface for the first output or will
    crash during the call to Platform::supportsSurfacelessContext(). The
    latter needs more explanation. After the compositingToggled() signal has
    been emitted, there is no scene and supportsSurfacelessContext() doesn't
    handle this case.
    
    In either case, we could return EGL_NO_SURFACE if compositing is being
    restarted, but if the underlying platform doesn't support the surfaceless
    context extension, then the composited outline will not be able to
    delete used textures, framebuffer objects, etc.
    
    This change addresses that problem by making sure that every platform
    window has a pbuffer allocated in case the surfaceless context extension
    is unsupported.
    
    (cherry picked from commit cc8cb8db)
    3dcc4ebd