include/vcl/opengl/OpenGLContext.hxx | 4 ++- vcl/source/opengl/OpenGLContext.cxx | 11 ++++++++++ vcl/source/opengl/OpenGLHelper.cxx | 38 +++++++++++++++++++++-------------- 3 files changed, 37 insertions(+), 16 deletions(-)
New commits: commit 39312d64b5e135159b80f0b65282dd977d31d3d7 Author: Michael Meeks <michael.me...@collabora.com> Date: Wed Sep 2 17:28:39 2015 +0100 Don't call GL debugging methods if there is no context. Change-Id: Ie6b824953b8ad19fd1b6a146cb6bf52bbb152ef7 Reviewed-on: https://gerrit.libreoffice.org/18277 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Jan Holesovsky <ke...@collabora.com> diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx index 7012c31..5aa318e 100644 --- a/include/vcl/opengl/OpenGLContext.hxx +++ b/include/vcl/opengl/OpenGLContext.hxx @@ -210,9 +210,11 @@ public: OpenGLProgram* GetProgram( const OUString& rVertexShader, const OUString& rFragmentShader, const OString& preamble = "" ); OpenGLProgram* UseProgram( const OUString& rVertexShader, const OUString& rFragmentShader, const OString& preamble = "" ); + /// Is this GL context the current context ? bool isCurrent(); static void clearCurrent(); - + /// Is there a current GL context ? + static bool hasCurrent(); /// make this GL context current - so it is implicit in subsequent GL calls void makeCurrent(); /// reset the GL context so this context is not implicit in subsequent GL calls. diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx index 16e499d..ad31a36 100644 --- a/vcl/source/opengl/OpenGLContext.cxx +++ b/vcl/source/opengl/OpenGLContext.cxx @@ -1402,6 +1402,17 @@ bool OpenGLContext::isCurrent() #endif } +bool OpenGLContext::hasCurrent() +{ +#if defined( WNT ) + return wglGetCurrentContext() != NULL; +#elif defined( MACOSX ) || defined( IOS ) || defined( ANDROID ) || defined(LIBO_HEADLESS) + return false; +#elif defined( UNX ) + return glXGetCurrentContext() != None; +#endif +} + void OpenGLContext::clearCurrent() { ImplSVData* pSVData = ImplGetSVData(); diff --git a/vcl/source/opengl/OpenGLHelper.cxx b/vcl/source/opengl/OpenGLHelper.cxx index ad90e1a..d2a917f 100644 --- a/vcl/source/opengl/OpenGLHelper.cxx +++ b/vcl/source/opengl/OpenGLHelper.cxx @@ -32,6 +32,7 @@ #include "opengl/zone.hxx" #include "opengl/watchdog.hxx" #include <osl/conditn.h> +#include <vcl/opengl/OpenGLContext.hxx> #if defined UNX && !defined MACOSX && !defined IOS && !defined ANDROID #include "opengl/x11/X11DeviceInfo.hxx" @@ -690,29 +691,36 @@ void OpenGLHelper::debugMsgPrint(const char *pArea, const char *pFormat, ...) va_list aArgs; va_start (aArgs, pFormat); - char pStr[1024]; + char pStr[1044]; #ifdef _WIN32 #define vsnprintf _vsnprintf #endif vsnprintf(pStr, sizeof(pStr), pFormat, aArgs); - pStr[sizeof(pStr)-1] = '\0'; + pStr[sizeof(pStr)-20] = '\0'; + + bool bHasContext = !OpenGLContext::hasCurrent(); + if (!bHasContext) + strcat(pStr, "- no GL context"); SAL_INFO(pArea, pStr); - OpenGLZone aZone; + if (bHasContext) + { + OpenGLZone aZone; - if (GLEW_KHR_debug) - glDebugMessageInsert(GL_DEBUG_SOURCE_APPLICATION, - GL_DEBUG_TYPE_OTHER, - 1, // one[sic] id is as good as another ? - // GL_DEBUG_SEVERITY_NOTIFICATION for >= GL4.3 ? - GL_DEBUG_SEVERITY_LOW, - strlen(pStr), pStr); - else if (GLEW_AMD_debug_output) - glDebugMessageInsertAMD(GL_DEBUG_CATEGORY_APPLICATION_AMD, - GL_DEBUG_SEVERITY_LOW_AMD, - 1, // one[sic] id is as good as another ? - strlen(pStr), pStr); + if (GLEW_KHR_debug) + glDebugMessageInsert(GL_DEBUG_SOURCE_APPLICATION, + GL_DEBUG_TYPE_OTHER, + 1, // one[sic] id is as good as another ? + // GL_DEBUG_SEVERITY_NOTIFICATION for >= GL4.3 ? + GL_DEBUG_SEVERITY_LOW, + strlen(pStr), pStr); + else if (GLEW_AMD_debug_output) + glDebugMessageInsertAMD(GL_DEBUG_CATEGORY_APPLICATION_AMD, + GL_DEBUG_SEVERITY_LOW_AMD, + 1, // one[sic] id is as good as another ? + strlen(pStr), pStr); + } va_end (aArgs); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits