summaryrefslogtreecommitdiff
path: root/vcl/source/opengl/OpenGLContext.cxx
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2015-09-02 22:14:10 +0100
committerMichael Meeks <michael.meeks@collabora.com>2015-09-02 22:46:48 +0100
commit16b0e217c1f67948374ff050496e5d4ffb8ceb90 (patch)
tree4ac841f030ae1868ff544ae6e5320d6d847f3a5b /vcl/source/opengl/OpenGLContext.cxx
parent75eb5a5cae3276fff4eee17af24916bdf5e7381b (diff)
tdf#93867 - clear current GL context before thread switch.
Fixes regression from otherwise a nice cleanup in: d20092259c7ea63885a539f911788715f8147ee9 Also get polarity of debug logging only with a context right. Change-Id: Id322471f01e5656e758aefc57b0d4d5ad073ec54
Diffstat (limited to 'vcl/source/opengl/OpenGLContext.cxx')
-rw-r--r--vcl/source/opengl/OpenGLContext.cxx14
1 files changed, 14 insertions, 0 deletions
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index 49feb75368b4..3c305d523d98 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -1336,6 +1336,20 @@ void OpenGLContext::clearCurrent()
pCurrentCtx->ReleaseFramebuffers();
}
+void OpenGLContext::prepareForYield()
+{
+ ImplSVData* pSVData = ImplGetSVData();
+
+ SAL_INFO("vcl.opengl", "Unbinding contexts in preparation for yield");
+ // release all framebuffers from the old context so we can re-attach the
+ // texture in the new context
+ OpenGLContext* pCurrentCtx = pSVData->maGDIData.mpLastContext;
+ if( pCurrentCtx && pCurrentCtx->isCurrent() )
+ pCurrentCtx->resetCurrent();
+
+ assert (!hasCurrent());
+}
+
void OpenGLContext::makeCurrent()
{
ImplSVData* pSVData = ImplGetSVData();