vcl/source/opengl/OpenGLContext.cxx |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

New commits:
commit 5b14cd7d8d293365ebc03ee1442610180c07ab8d
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 4cde114..e7f7f71 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -1073,7 +1073,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());
     }
@@ -1083,7 +1087,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

Reply via email to