Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xs/src/slic3r/GUI/GLCanvas3D.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/xs/src/slic3r/GUI/GLCanvas3D.cpp b/xs/src/slic3r/GUI/GLCanvas3D.cpp
index 062b57b49..ce1c55264 100644
--- a/xs/src/slic3r/GUI/GLCanvas3D.cpp
+++ b/xs/src/slic3r/GUI/GLCanvas3D.cpp
@@ -3436,8 +3436,14 @@ void GLCanvas3D::_refresh_if_shown_on_screen()
{
const Size& cnv_size = get_canvas_size();
_resize((unsigned int)cnv_size.get_width(), (unsigned int)cnv_size.get_height());
- if (m_canvas != nullptr)
- m_canvas->Refresh();
+
+ // Because of performance problems on macOS, where PaintEvents are not delivered
+ // frequently enough, we call render() here directly when we can.
+ // We can't do that when m_force_zoom_to_bed_enabled == true, because then render()
+ // ends up calling back here via _force_zoom_to_bed(), causing a stack overflow.
+ if (m_canvas != nullptr) {
+ m_force_zoom_to_bed_enabled ? m_canvas->Refresh() : render();
+ }
}
}