diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 8ebfc3472..bd1e6d195 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -43,9 +43,11 @@ //================== -// 2.2.0.beta1 techs +// 2.2.0.rc1 techs //================== -#define ENABLE_2_2_0_BETA1 1 +#define ENABLE_2_2_0_RC1 1 +// Enable hack to remove crash when closing on OSX 10.9.5 +#define ENABLE_HACK_CLOSING_ON_OSX_10_9_5 (1 && ENABLE_2_2_0_RC1) #endif // _technologies_h_ diff --git a/src/slic3r/GUI/GLCanvas3DManager.cpp b/src/slic3r/GUI/GLCanvas3DManager.cpp index a5d75d601..fcdbe9af1 100644 --- a/src/slic3r/GUI/GLCanvas3DManager.cpp +++ b/src/slic3r/GUI/GLCanvas3DManager.cpp @@ -16,6 +16,11 @@ #include #include +#if ENABLE_HACK_CLOSING_ON_OSX_10_9_5 +// Part of temporary hack to remove crash when closing on OSX 10.9.5 +#include +#endif // ENABLE_HACK_CLOSING_ON_OSX_10_9_5 + #ifdef __APPLE__ #include "../Utils/MacDarkMode.hpp" #endif // __APPLE__ @@ -192,6 +197,11 @@ GLCanvas3DManager::EMultisampleState GLCanvas3DManager::s_multisample = GLCanvas bool GLCanvas3DManager::s_compressed_textures_supported = false; GLCanvas3DManager::EFramebufferType GLCanvas3DManager::s_framebuffers_type = GLCanvas3DManager::FB_None; GLCanvas3DManager::GLInfo GLCanvas3DManager::s_gl_info; +#if ENABLE_HACK_CLOSING_ON_OSX_10_9_5 +#ifdef __APPLE__ +GLCanvas3DManager::OSInfo GLCanvas3DManager::s_os_info; +#endif // __APPLE__ +#endif // ENABLE_HACK_CLOSING_ON_OSX_10_9_5 GLCanvas3DManager::GLCanvas3DManager() : m_context(nullptr) @@ -223,6 +233,15 @@ bool GLCanvas3DManager::add(wxGLCanvas* canvas, Bed3D& bed, Camera& camera, GLTo m_context = new wxGLContext(canvas); if (m_context == nullptr) return false; + +#if ENABLE_HACK_CLOSING_ON_OSX_10_9_5 +#ifdef __APPLE__ + // Part of temporary hack to remove crash when closing on OSX 10.9.5 + s_os_info.major = wxPlatformInfo::Get().GetOSMajorVersion(); + s_os_info.minor = wxPlatformInfo::Get().GetOSMinorVersion(); + s_os_info.micro = wxPlatformInfo::Get().GetOSMicroVersion(); +#endif //__APPLE__ +#endif // ENABLE_HACK_CLOSING_ON_OSX_10_9_5 } canvas3D->set_context(m_context); @@ -307,6 +326,15 @@ void GLCanvas3DManager::destroy() { if (m_context != nullptr) { +#if ENABLE_HACK_CLOSING_ON_OSX_10_9_5 +#ifdef __APPLE__ + // this is a temporary ugly hack to solve the crash happening when closing the application on OSX 10.9.5 + // the crash is inside wxGLContext destructor + if (s_os_info.major == 10 && s_os_info.minor == 9 && s_os_info.micro == 5) + return; +#endif //__APPLE__ +#endif // ENABLE_HACK_CLOSING_ON_OSX_10_9_5 + delete m_context; m_context = nullptr; } diff --git a/src/slic3r/GUI/GLCanvas3DManager.hpp b/src/slic3r/GUI/GLCanvas3DManager.hpp index 940e0230a..c7301f2b4 100644 --- a/src/slic3r/GUI/GLCanvas3DManager.hpp +++ b/src/slic3r/GUI/GLCanvas3DManager.hpp @@ -68,6 +68,17 @@ public: void detect() const; }; +#if ENABLE_HACK_CLOSING_ON_OSX_10_9_5 +#ifdef __APPLE__ + struct OSInfo + { + int major{ 0 }; + int minor{ 0 }; + int micro{ 0 }; + }; +#endif //__APPLE__ +#endif // ENABLE_HACK_CLOSING_ON_OSX_10_9_5 + private: enum EMultisampleState : unsigned char { @@ -81,6 +92,11 @@ private: CanvasesMap m_canvases; wxGLContext* m_context; static GLInfo s_gl_info; +#if ENABLE_HACK_CLOSING_ON_OSX_10_9_5 +#ifdef __APPLE__ + static OSInfo s_os_info; +#endif //__APPLE__ +#endif // ENABLE_HACK_CLOSING_ON_OSX_10_9_5 bool m_gl_initialized; static EMultisampleState s_multisample; static bool s_compressed_textures_supported;