diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 4b3864552..5dc0d430f 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -39,13 +39,15 @@ #include -#if ENABLE_OPENGL_ERROR_LOGGING +#ifdef HAS_GLSAFE void glAssertRecentCallImpl(const char* file_name, unsigned int line, const char* function_name) { -#if NDEBUG +#if defined(NDEBUG) && ENABLE_OPENGL_ERROR_LOGGING + // In release mode, if OpenGL debugging was forced by ENABLE_OPENGL_ERROR_LOGGING, only show + // OpenGL errors if sufficiently high loglevel. if (Slic3r::get_logging_level() < 5) return; -#endif // NDEBUG +#endif // ENABLE_OPENGL_ERROR_LOGGING GLenum err = glGetError(); if (err == GL_NO_ERROR) @@ -64,29 +66,7 @@ void glAssertRecentCallImpl(const char* file_name, unsigned int line, const char BOOST_LOG_TRIVIAL(error) << "OpenGL error in " << file_name << ":" << line << ", function " << function_name << "() : " << (int)err << " - " << sErr; assert(false); } -#else -#ifdef HAS_GLSAFE -void glAssertRecentCallImpl(const char *file_name, unsigned int line, const char *function_name) -{ - GLenum err = glGetError(); - if (err == GL_NO_ERROR) - return; - const char *sErr = 0; - switch (err) { - case GL_INVALID_ENUM: sErr = "Invalid Enum"; break; - case GL_INVALID_VALUE: sErr = "Invalid Value"; break; - // be aware that GL_INVALID_OPERATION is generated if glGetError is executed between the execution of glBegin and the corresponding execution of glEnd - case GL_INVALID_OPERATION: sErr = "Invalid Operation"; break; - case GL_STACK_OVERFLOW: sErr = "Stack Overflow"; break; - case GL_STACK_UNDERFLOW: sErr = "Stack Underflow"; break; - case GL_OUT_OF_MEMORY: sErr = "Out Of Memory"; break; - default: sErr = "Unknown"; break; - } - BOOST_LOG_TRIVIAL(error) << "OpenGL error in " << file_name << ":" << line << ", function " << function_name << "() : " << (int)err << " - " << sErr; - assert(false); -} -#endif -#endif // ENABLE_OPENGL_ERROR_LOGGING +#endif // HAS_GLSAFE namespace Slic3r { diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index 410a3fbcd..f935f0fb4 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -10,27 +10,20 @@ #include -#if ENABLE_OPENGL_ERROR_LOGGING -extern void glAssertRecentCallImpl(const char* file_name, unsigned int line, const char* function_name); -inline void glAssertRecentCall() { glAssertRecentCallImpl(__FILE__, __LINE__, __FUNCTION__); } -#define glsafe(cmd) do { cmd; glAssertRecentCallImpl(__FILE__, __LINE__, __FUNCTION__); } while (false) -#define glcheck() do { glAssertRecentCallImpl(__FILE__, __LINE__, __FUNCTION__); } while (false) -#else -#ifndef NDEBUG -#define HAS_GLSAFE +#if ENABLE_OPENGL_ERROR_LOGGING || ! defined(NDEBUG) + #define HAS_GLSAFE #endif #ifdef HAS_GLSAFE -extern void glAssertRecentCallImpl(const char *file_name, unsigned int line, const char *function_name); -inline void glAssertRecentCall() { glAssertRecentCallImpl(__FILE__, __LINE__, __FUNCTION__); } -#define glsafe(cmd) do { cmd; glAssertRecentCallImpl(__FILE__, __LINE__, __FUNCTION__); } while (false) -#define glcheck() do { glAssertRecentCallImpl(__FILE__, __LINE__, __FUNCTION__); } while (false) -#else -inline void glAssertRecentCall() { } -#define glsafe(cmd) cmd -#define glcheck() -#endif -#endif // ENABLE_OPENGL_ERROR_LOGGING + extern void glAssertRecentCallImpl(const char *file_name, unsigned int line, const char *function_name); + inline void glAssertRecentCall() { glAssertRecentCallImpl(__FILE__, __LINE__, __FUNCTION__); } + #define glsafe(cmd) do { cmd; glAssertRecentCallImpl(__FILE__, __LINE__, __FUNCTION__); } while (false) + #define glcheck() do { glAssertRecentCallImpl(__FILE__, __LINE__, __FUNCTION__); } while (false) +#else // HAS_GLSAFE + inline void glAssertRecentCall() { } + #define glsafe(cmd) cmd + #define glcheck() +#endif // HAS_GLSAFE namespace Slic3r { namespace GUI {