vcl/source/opengl/OpenGLContext.cxx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
New commits: commit a3945b695457cc697ce8264aea24d10e97663ab2 Author: Michael Meeks <michael.me...@collabora.com> Date: Mon Nov 17 21:51:50 2014 +0000 vcl: make OpenGLContext::makeCurrent unfeasibly faster. Don't set the same context if it is already set. Apparently this is something that is unbelievably costly on Windows, and very costly on Linux. Instead check if the context is already set, and don't re-set it. Change-Id: If4fed3e555e1388031446be76d6fdfde5b9f13e5 diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx index cf19258..b803fd6 100644 --- a/vcl/source/opengl/OpenGLContext.cxx +++ b/vcl/source/opengl/OpenGLContext.cxx @@ -1092,7 +1092,11 @@ SystemWindowData OpenGLContext::generateWinData(vcl::Window* pParent, bool) void OpenGLContext::makeCurrent() { #if defined( WNT ) - if (!wglMakeCurrent(m_aGLWin.hDC, m_aGLWin.hRC)) + if (wglGetCurrentContext() == m_aGLWin.hRC) + { + SAL_INFO("vcl.opengl", "OpenGLContext::makeCurrent(): Avoid setting the same context"); + } + else if (!wglMakeCurrent(m_aGLWin.hDC, m_aGLWin.hRC)) { SAL_WARN("vcl.opengl", "OpenGLContext::makeCurrent(): wglMakeCurrent failed: " << GetLastError()); } @@ -1102,7 +1106,11 @@ void OpenGLContext::makeCurrent() #elif defined( IOS ) || defined( ANDROID ) // nothing #elif defined( UNX ) - if (!glXMakeCurrent( m_aGLWin.dpy, mbPixmap ? m_aGLWin.glPix : m_aGLWin.win, m_aGLWin.ctx )) + if (glXGetCurrentContext() == m_aGLWin.ctx) + { + SAL_INFO("vcl.opengl", "OpenGLContext::makeCurrent(): Avoid setting the same context"); + } + else if (!glXMakeCurrent( m_aGLWin.dpy, mbPixmap ? m_aGLWin.glPix : m_aGLWin.win, m_aGLWin.ctx )) SAL_WARN("vcl.opengl", "OpenGLContext::makeCurrent failed"); #endif } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits