diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2015-09-02 17:28:39 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2015-09-02 17:37:11 +0000 |
commit | 7164ec07ca50a9faba85cb73bcd8a734d058ec34 (patch) | |
tree | e5b3e2c41e81898d0cb93306c253c329e177fa53 /vcl/source | |
parent | 0c648002addbecbf1ff5c9b9f6aa708521e16384 (diff) |
Don't call GL debugging methods if there is no context.
Change-Id: Ie6b824953b8ad19fd1b6a146cb6bf52bbb152ef7
Reviewed-on: https://gerrit.libreoffice.org/18276
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/opengl/OpenGLContext.cxx | 11 | ||||
-rw-r--r-- | vcl/source/opengl/OpenGLHelper.cxx | 38 |
2 files changed, 34 insertions, 15 deletions
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx index f3eeb7cfc53f..49feb75368b4 100644 --- a/vcl/source/opengl/OpenGLContext.cxx +++ b/vcl/source/opengl/OpenGLContext.cxx @@ -1314,6 +1314,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 4065ce0590ff..6019850c88fe 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" @@ -686,29 +687,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); } |