mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-04 22:31:02 +00:00
Fix crash on macOS when OrcaSlicer is quit from the Dock, a logout or a restart (#16136)
Fix crash when quitting from the Dock, logout or restart on macOS
This commit is contained in:
@@ -3087,6 +3087,18 @@ bool GUI_App::on_init_inner()
|
||||
d->EndModal(wxID_ABORT);
|
||||
});
|
||||
|
||||
#ifdef __APPLE__
|
||||
// A quit request from the Dock, a logout or a restart ends with AppKit calling exit() right after this event, so
|
||||
// OnExit() and ~GUI_App() never run. Shut the plugins and Python down here as ~GUI_App() does. Left to
|
||||
// PluginManager's static destructor, the shutdown locks hook state that has already been destroyed and aborts.
|
||||
wxGetApp().Bind(wxEVT_END_SESSION, [](wxCloseEvent &e) {
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "received wxEVT_END_SESSION";
|
||||
Slic3r::PluginManager::instance().shutdown();
|
||||
Slic3r::PythonInterpreter::instance().shutdown();
|
||||
e.Skip();
|
||||
});
|
||||
#endif
|
||||
|
||||
// Verify resources path
|
||||
const wxString resources_dir = from_u8(Slic3r::resources_dir());
|
||||
wxCHECK_MSG(wxDirExists(resources_dir), false,
|
||||
|
||||
Reference in New Issue
Block a user