diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2015-12-11 18:18:50 +0000 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2015-12-11 22:41:06 +0000 |
commit | 0f1ce0e8d4fa3f75fc3be70b2cdbe7a44ea87381 (patch) | |
tree | 7b0b4d62abd51cfc03ab9e3ce75bce1b3e0da77d | |
parent | bd3b666b12e840d7f7381c273fb8afc846cd4876 (diff) |
vcl: use a custom tag for VCL OpenGLContext's to avoid re-use.feature/5-1-pick
Other code is out of legacy mode now, so can't legacy as a proxy
for VCL usage.
Change-Id: Ie3807a3af680b707f2f08d058db955bc9cae6c2b
Reviewed-on: https://gerrit.libreoffice.org/20649
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
-rw-r--r-- | include/vcl/opengl/OpenGLContext.hxx | 5 | ||||
-rw-r--r-- | vcl/inc/openglgdiimpl.hxx | 5 | ||||
-rw-r--r-- | vcl/opengl/gdiimpl.cxx | 7 | ||||
-rw-r--r-- | vcl/opengl/win/gdiimpl.cxx | 1 | ||||
-rw-r--r-- | vcl/opengl/x11/gdiimpl.cxx | 1 | ||||
-rw-r--r-- | vcl/source/opengl/OpenGLContext.cxx | 1 |
6 files changed, 9 insertions, 11 deletions
diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx index fb09bd586b85..a6d753f0a391 100644 --- a/include/vcl/opengl/OpenGLContext.hxx +++ b/include/vcl/opengl/OpenGLContext.hxx @@ -204,6 +204,10 @@ public: return mbRequestLegacyContext; } + /// VCL promiscuously re-uses its own contexts: + void setVCLOnly() { mbVCLOnly = true; } + bool isVCLOnly() { return mbVCLOnly; } + bool supportMultiSampling() const; static SystemWindowData generateWinData(vcl::Window* pParent, bool bRequestLegacyContext); @@ -229,6 +233,7 @@ private: int mnRefCount; bool mbRequestLegacyContext; bool mbUseDoubleBufferedRendering; + bool mbVCLOnly; int mnFramebufferCount; OpenGLFramebuffer* mpCurrentFramebuffer; diff --git a/vcl/inc/openglgdiimpl.hxx b/vcl/inc/openglgdiimpl.hxx index a1c2a2539352..3e5ec94769ed 100644 --- a/vcl/inc/openglgdiimpl.hxx +++ b/vcl/inc/openglgdiimpl.hxx @@ -72,9 +72,6 @@ protected: OpenGLFramebuffer* mpFramebuffer; OpenGLProgram* mpProgram; - /// Is it someone else's context we shouldn't be fiddling with ? - static bool IsForeignContext(const rtl::Reference<OpenGLContext> &xContext); - /// This idle handler is used to swap buffers after rendering. OpenGLFlushIdle *mpFlush; @@ -174,7 +171,7 @@ protected: bool UseContext( const rtl::Reference<OpenGLContext> &pContext ) { return pContext->isInitialized() && // not released by the OS etc. - IsForeignContext( pContext ); // a genuine VCL context. + pContext->isVCLOnly(); } public: diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index 380417d1aa70..f1068721a887 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -2092,11 +2092,4 @@ void OpenGLSalGraphicsImpl::doFlush() VCL_GL_INFO( "flushAndSwap - end." ); } -bool OpenGLSalGraphicsImpl::IsForeignContext(const rtl::Reference<OpenGLContext> &xContext) -{ - // so far a blunt heuristic: vcl uses shiny new contexts. - return xContext->requestedLegacy(); -} - - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/opengl/win/gdiimpl.cxx b/vcl/opengl/win/gdiimpl.cxx index 666cdbfa393e..9ca266a6604a 100644 --- a/vcl/opengl/win/gdiimpl.cxx +++ b/vcl/opengl/win/gdiimpl.cxx @@ -29,6 +29,7 @@ void WinOpenGLSalGraphicsImpl::copyBits( const SalTwoRect& rPosAry, SalGraphics* rtl::Reference<OpenGLContext> WinOpenGLSalGraphicsImpl::CreateWinContext() { rtl::Reference<OpenGLContext> pContext = OpenGLContext::Create(); + pContext->setVCLOnly(); pContext->init( mrParent.mhLocalDC, mrParent.mhWnd ); return pContext; } diff --git a/vcl/opengl/x11/gdiimpl.cxx b/vcl/opengl/x11/gdiimpl.cxx index 595ca45ca4b0..effc81b3c815 100644 --- a/vcl/opengl/x11/gdiimpl.cxx +++ b/vcl/opengl/x11/gdiimpl.cxx @@ -53,6 +53,7 @@ rtl::Reference<OpenGLContext> X11OpenGLSalGraphicsImpl::CreateWinContext() Window aWin = pProvider->GetX11Window(); rtl::Reference<OpenGLContext> pContext = OpenGLContext::Create(); + pContext->setVCLOnly(); pContext->init( mrParent.GetXDisplay(), aWin, mrParent.m_nXScreen.getXScreen() ); return pContext; diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx index ed1347d4b801..771b548f1eb8 100644 --- a/vcl/source/opengl/OpenGLContext.cxx +++ b/vcl/source/opengl/OpenGLContext.cxx @@ -62,6 +62,7 @@ OpenGLContext::OpenGLContext(): mnRefCount(0), mbRequestLegacyContext(false), mbUseDoubleBufferedRendering(true), + mbVCLOnly(false), mnFramebufferCount(0), mpCurrentFramebuffer(nullptr), mpFirstFramebuffer(nullptr), |