[Libreoffice-commits] core.git: vcl/inc vcl/opengl

Stephan Bergmann sbergman at redhat.com
Wed Dec 14 09:30:56 UTC 2016


 vcl/inc/unx/saldisp.hxx    |    3 ++-
 vcl/opengl/x11/gdiimpl.cxx |   45 ++++++---------------------------------------
 2 files changed, 8 insertions(+), 40 deletions(-)

New commits:
commit 876de03290ce0e9393134d722e5b15025e32a341
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Dec 14 10:30:00 2016 +0100

    Simplify GLX11Window::HasGLXExtension, avoiding strtok
    
    Change-Id: If737cf4aaec1e6297db2bc8a80b19720ca9ca189

diff --git a/vcl/inc/unx/saldisp.hxx b/vcl/inc/unx/saldisp.hxx
index 339ba80..d64b67e 100644
--- a/vcl/inc/unx/saldisp.hxx
+++ b/vcl/inc/unx/saldisp.hxx
@@ -30,6 +30,7 @@ class   SalXLib;
 #include <X11/extensions/Xrender.h>
 #include <epoxy/glx.h>
 
+#include <rtl/string.hxx>
 #include <unx/salunx.h>
 #include <unx/saltype.h>
 #include <vcl/opengl/OpenGLContext.hxx>
@@ -200,7 +201,7 @@ public:
     Window             win;
     XVisualInfo*       vi;
     GLXContext         ctx;
-    const char*        GLXExtensions;
+    OString            GLXExtensions;
 
     bool HasGLXExtension(const char* name) const;
 
diff --git a/vcl/opengl/x11/gdiimpl.cxx b/vcl/opengl/x11/gdiimpl.cxx
index 292dd14..d46b002 100644
--- a/vcl/opengl/x11/gdiimpl.cxx
+++ b/vcl/opengl/x11/gdiimpl.cxx
@@ -525,56 +525,23 @@ bool X11OpenGLContext::initWindow()
     return true;
 }
 
-// Copy of gluCheckExtension(), from the Apache-licensed
-// https://code.google.com/p/glues/source/browse/trunk/glues/source/glues_registry.c
-static GLboolean checkExtension(const GLubyte* extName, const GLubyte* extString)
-{
-  GLboolean flag=GL_FALSE;
-  char* word;
-  char* lookHere;
-  char* deleteThis;
-
-  if (extString==nullptr)
-  {
-     return GL_FALSE;
-  }
-
-  deleteThis=lookHere=static_cast<char*>(malloc(strlen(reinterpret_cast<const char*>(extString))+1));
-  if (lookHere==nullptr)
-  {
-     return GL_FALSE;
-  }
-
-  /* strtok() will modify string, so copy it somewhere */
-  strcpy(lookHere, reinterpret_cast<const char*>(extString));
-
-  while ((word=strtok(lookHere, " "))!=nullptr)
-  {
-     if (strcmp(word, reinterpret_cast<const char*>(extName))==0)
-     {
-        flag=GL_TRUE;
-        break;
-     }
-     lookHere=nullptr; /* get next token */
-  }
-  free(static_cast<void*>(deleteThis));
-
-  return flag;
-}
-
 GLX11Window::GLX11Window()
     : dpy(nullptr)
     , screen(0)
     , win(0)
     , vi(nullptr)
     , ctx(nullptr)
-    , GLXExtensions(nullptr)
 {
 }
 
 bool GLX11Window::HasGLXExtension( const char* name ) const
 {
-    return checkExtension( reinterpret_cast<const GLubyte*>(name), reinterpret_cast<const GLubyte*>(GLXExtensions) );
+    for (sal_Int32 i = 0; i != -1;) {
+        if (GLXExtensions.getToken(0, ' ', i) == name) {
+            return true;
+        }
+    }
+    return false;
 }
 
 GLX11Window::~GLX11Window()


More information about the Libreoffice-commits mailing list