Added missing GL context "Set Current" calls before loading data
into vertex buffers. Changed behavior of Canvas3D::on_render() to postpone rendering to idle, as on OSX the paint events happen directly from control updates, if the control update triggers Canvas3D window rescaling. With this change, rendering only happens from idle handler consistently.
This commit is contained in:
parent
eec289961a
commit
ed9a924880
1 changed files with 8 additions and 1 deletions
|
@ -4627,6 +4627,8 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re
|
||||||
if ((m_canvas == nullptr) || (m_config == nullptr) || (m_model == nullptr))
|
if ((m_canvas == nullptr) || (m_config == nullptr) || (m_model == nullptr))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
_set_current();
|
||||||
|
|
||||||
struct ModelVolumeState {
|
struct ModelVolumeState {
|
||||||
ModelVolumeState(const GLVolume *volume) :
|
ModelVolumeState(const GLVolume *volume) :
|
||||||
model_volume(nullptr), geometry_id(volume->geometry_id), volume_idx(-1) {}
|
model_volume(nullptr), geometry_id(volume->geometry_id), volume_idx(-1) {}
|
||||||
|
@ -4933,6 +4935,8 @@ void GLCanvas3D::load_gcode_preview(const GCodePreviewData& preview_data, const
|
||||||
const Print *print = this->fff_print();
|
const Print *print = this->fff_print();
|
||||||
if ((m_canvas != nullptr) && (print != nullptr))
|
if ((m_canvas != nullptr) && (print != nullptr))
|
||||||
{
|
{
|
||||||
|
_set_current();
|
||||||
|
|
||||||
std::vector<float> tool_colors = _parse_colors(str_tool_colors);
|
std::vector<float> tool_colors = _parse_colors(str_tool_colors);
|
||||||
|
|
||||||
if (m_volumes.empty())
|
if (m_volumes.empty())
|
||||||
|
@ -4970,6 +4974,7 @@ void GLCanvas3D::load_sla_preview()
|
||||||
const SLAPrint* print = this->sla_print();
|
const SLAPrint* print = this->sla_print();
|
||||||
if ((m_canvas != nullptr) && (print != nullptr))
|
if ((m_canvas != nullptr) && (print != nullptr))
|
||||||
{
|
{
|
||||||
|
_set_current();
|
||||||
_load_shells_sla();
|
_load_shells_sla();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4980,6 +4985,8 @@ void GLCanvas3D::load_preview(const std::vector<std::string>& str_tool_colors, c
|
||||||
if (print == nullptr)
|
if (print == nullptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
_set_current();
|
||||||
|
|
||||||
_load_print_toolpaths();
|
_load_print_toolpaths();
|
||||||
_load_wipe_tower_toolpaths(str_tool_colors);
|
_load_wipe_tower_toolpaths(str_tool_colors);
|
||||||
for (const PrintObject* object : print->objects())
|
for (const PrintObject* object : print->objects())
|
||||||
|
@ -5650,7 +5657,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
||||||
|
|
||||||
void GLCanvas3D::on_paint(wxPaintEvent& evt)
|
void GLCanvas3D::on_paint(wxPaintEvent& evt)
|
||||||
{
|
{
|
||||||
render();
|
m_dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLCanvas3D::on_key_down(wxKeyEvent& evt)
|
void GLCanvas3D::on_key_down(wxKeyEvent& evt)
|
||||||
|
|
Loading…
Reference in a new issue