diff options
author | bubnikv <bubnikv@gmail.com> | 2020-03-13 16:57:45 +0300 |
---|---|---|
committer | bubnikv <bubnikv@gmail.com> | 2020-03-13 16:57:45 +0300 |
commit | 98fc01afe77bdb408ecf7142215ce18333176996 (patch) | |
tree | ecd2eafe500d3f33e612d851255aa65c35d02602 /src/slic3r/GUI/Mouse3DController.cpp | |
parent | 9b26f8a18b214174b9749d7db44f5d57fcd2a6b0 (diff) |
Fix of compilation on OSX and Linux, update of camera after 3D mouse
disconnect moved to the main thread.
Diffstat (limited to 'src/slic3r/GUI/Mouse3DController.cpp')
-rw-r--r-- | src/slic3r/GUI/Mouse3DController.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index 32b6739e6..dcce52ae8 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -407,9 +407,13 @@ void Mouse3DController::disconnected() m_params_by_device[m_device_str] = m_params_ui; m_device_str.clear(); m_connected = false; - wxGetApp().plater()->get_camera().recover_from_free_camera(); - wxGetApp().plater()->set_current_canvas_as_dirty(); - wxWakeUpIdle(); + wxGetApp().plater()->CallAfter([]() { + Plater *plater = wxGetApp().plater(); + if (plater != nullptr) { + plater->get_camera().recover_from_free_camera(); + plater->set_current_canvas_as_dirty(); + } + }); } } @@ -822,10 +826,14 @@ void Mouse3DController::disconnect_device() #ifdef _WIN32 // Enumerate once immediately after disconnect. m_wakeup = true; -#endif // _WIN32 - wxGetApp().plater()->get_camera().recover_from_free_camera(); - wxGetApp().plater()->set_current_canvas_as_dirty(); - wxWakeUpIdle(); +#endif // _WIN32 + wxGetApp().plater()->CallAfter([]() { + Plater *plater = wxGetApp().plater(); + if (plater != nullptr) { + plater->get_camera().recover_from_free_camera(); + plater->set_current_canvas_as_dirty(); + } + }); } } |