3rd attempt to fix opengl on ubuntu

This commit is contained in:
Enrico Turri 2018-06-27 12:36:49 +02:00
parent 23d10fdadc
commit 8db4fdc24c
8 changed files with 58 additions and 45 deletions

View file

@ -186,7 +186,9 @@ sub new {
# Initialize 3D toolpaths preview
if ($Slic3r::GUI::have_OpenGL) {
$self->{preview3D} = Slic3r::GUI::Plater::3DPreview->new($self->{preview_notebook}, $self->{print}, $self->{gcode_preview_data}, $self->{config});
Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 0);
#==================================================================================================================
# Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 0);
#==================================================================================================================
Slic3r::GUI::_3DScene::enable_legend_texture($self->{preview3D}->canvas, 1);
Slic3r::GUI::_3DScene::register_on_viewport_changed_callback($self->{preview3D}->canvas, sub { Slic3r::GUI::_3DScene::set_viewport_from_scene($self->{canvas3D}, $self->{preview3D}->canvas); });
$self->{preview_notebook}->AddPage($self->{preview3D}, L('Preview'));
@ -202,21 +204,25 @@ sub new {
EVT_NOTEBOOK_PAGE_CHANGED($self, $self->{preview_notebook}, sub {
my $preview = $self->{preview_notebook}->GetCurrentPage;
if (($preview != $self->{preview3D}) && ($preview != $self->{canvas3D})) {
Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 0);
Slic3r::GUI::_3DScene::set_active($self->{canvas3D}, 0);
#==================================================================================================================
# Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 0);
# Slic3r::GUI::_3DScene::set_active($self->{canvas3D}, 0);
# Slic3r::GUI::_3DScene::reset_current_canvas();
#==================================================================================================================
$preview->OnActivate if $preview->can('OnActivate');
} elsif ($preview == $self->{preview3D}) {
Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 1);
Slic3r::GUI::_3DScene::set_active($self->{canvas3D}, 0);
#==================================================================================================================
# Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 1);
# Slic3r::GUI::_3DScene::set_active($self->{canvas3D}, 0);
#==================================================================================================================
$self->{preview3D}->load_print;
# sets the canvas as dirty to force a render at the 1st idle event (wxWidgets IsShownOnScreen() is buggy and cannot be used reliably)
Slic3r::GUI::_3DScene::set_as_dirty($self->{preview3D}->canvas);
} elsif ($preview == $self->{canvas3D}) {
Slic3r::GUI::_3DScene::set_active($self->{canvas3D}, 1);
Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 0);
#==================================================================================================================
# Slic3r::GUI::_3DScene::set_active($self->{canvas3D}, 1);
# Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 0);
#==================================================================================================================
if (Slic3r::GUI::_3DScene::is_reload_delayed($self->{canvas3D})) {
my $selections = $self->collect_selections;
Slic3r::GUI::_3DScene::set_objects_selections($self->{canvas3D}, \@$selections);