diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2015-09-16 03:25:05 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2015-09-16 16:27:01 +0000 |
commit | 9617d1c6a299901b79618d657e31635e59eda007 (patch) | |
tree | 1d715c1e930138aab419a8c54c1688666c3e78e3 | |
parent | bde953b84baed33098ae747c49a882e14a2bf7c7 (diff) |
tdf#94252 - avoid switching contexts un-necessarily to reduce flicker.
Change-Id: Id4ac387174fa03c5886a990d89fd53a4f18db11c
Reviewed-on: https://gerrit.libreoffice.org/18610
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/18629
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
-rw-r--r-- | vcl/opengl/gdiimpl.cxx | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index 37b21f36edc1..9ea8a7c87fc8 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -77,8 +77,17 @@ bool OpenGLSalGraphicsImpl::AcquireContext( ) { ImplSVData* pSVData = ImplGetSVData(); + // We always prefer to bind our VirtualDevice / offscreen graphics + // to the current OpenGLContext - to avoid switching contexts. + if (mpContext.is() && mbOffscreen) + { + if (OpenGLContext::hasCurrent() && !mpContext->isCurrent()) + mpContext.clear(); + } + if( mpContext.is() ) { + // Check whether the context was reset underneath us. if( mpContext->isInitialized() ) return true; mpContext.clear(); |