diff options
author | Thomas Senyk <[email protected]> | 2022-12-14 08:20:36 +0100 |
---|---|---|
committer | Thomas Senyk <[email protected]> | 2023-01-12 19:03:15 +0100 |
commit | 17a59f661398bf56aeaba4187f55d07eea09c578 (patch) | |
tree | 8d651db27a7be2f8058cab95f9f7498b4346abbd /src/gui/kernel/qopenglcontext_platform.h | |
parent | 8745a73c4fa42e6fc304bc5b53075ac071a918ed (diff) |
Add QEGLContext::invalidateContext
QEGLContext::invalidateContext will mark that egl context is invalide
and trigger SceneGraph to destroy it, create a new one and re-create
and re-upload all resources (e.g. textures) associated with the current
state of the SceneGraph
In addition this change also improves
QEglFSWindow::invalidateSurface() and
QEglFSContext::eglSurfaceForPlatformSurface(..)
Where QEglFSWindow::invalidateSurface() will now destroy the
corresponding EGLSurface via eglDestroySurface, including "unbinding"
it from the current thread via eglMakeCurrent and
un-setting the screen's EGLSurface in case it's the same resource.
QEglFSContext::eglSurfaceForPlatformSurface(..) will now call
QEglFSWindow::resetSurface() in case of getting a EGL_NO_SURFACE
from the QEglFSWindow (which happens if above invalidateSurface()
was called before) - therefor re-creating the resource if
it was destoyed via QEglFSWindow::invalidateSurface()
Pick-to: 6.5
Change-Id: I37badd1fc11e993c395fb1502e9bd27ebe18b821
Reviewed-by: Laszlo Agocs <[email protected]>
Diffstat (limited to 'src/gui/kernel/qopenglcontext_platform.h')
-rw-r--r-- | src/gui/kernel/qopenglcontext_platform.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gui/kernel/qopenglcontext_platform.h b/src/gui/kernel/qopenglcontext_platform.h index fe36478a653..1f84cf6ce3c 100644 --- a/src/gui/kernel/qopenglcontext_platform.h +++ b/src/gui/kernel/qopenglcontext_platform.h @@ -79,6 +79,8 @@ struct Q_GUI_EXPORT QEGLContext virtual EGLContext nativeContext() const = 0; virtual EGLConfig config() const = 0; virtual EGLDisplay display() const = 0; + + virtual void invalidateContext() = 0; }; #endif |