Optimization: don't reload 3D toolpaths each time the preview tab is selected

This commit is contained in:
Alessandro Ranellucci 2015-01-25 10:59:39 +01:00
parent 38d8b1d268
commit 43f57ba2cb
2 changed files with 15 additions and 4 deletions

View File

@ -121,7 +121,7 @@ sub new {
EVT_NOTEBOOK_PAGE_CHANGED($self, $self->{preview_notebook}, sub {
if ($self->{preview_notebook}->GetSelection == $self->{preview3D_page_idx}) {
$self->{preview3D}->reload_print;
$self->{preview3D}->load_print;
}
});
@ -874,14 +874,16 @@ sub schedule_background_process {
if (defined $self->{apply_config_timer}) {
$self->{apply_config_timer}->Start(PROCESS_DELAY, 1); # 1 = one shot
$self->{toolpaths2D}->reload_print if $self->{toolpaths2D};
$self->{preview3D}->reload_print if $self->{preview3D};
}
}
sub async_apply_config {
my ($self) = @_;
# reset preview canvases
$self->{toolpaths2D}->reload_print if $self->{toolpaths2D};
$self->{preview3D}->reload_print if $self->{preview3D};
# pause process thread before applying new config
# since we don't want to touch data that is being used by the threads
$self->pause_background_process;

View File

@ -8,7 +8,7 @@ use Wx qw(:misc :sizer :slider :statictext wxWHITE);
use Wx::Event qw(EVT_SLIDER EVT_KEY_DOWN);
use base qw(Wx::Panel Class::Accessor);
__PACKAGE__->mk_accessors(qw(print enabled canvas slider));
__PACKAGE__->mk_accessors(qw(print enabled _loaded canvas slider));
sub new {
my $class = shift;
@ -76,6 +76,14 @@ sub reload_print {
my ($self) = @_;
$self->canvas->reset_objects;
$self->_loaded(0);
$self->load_print;
}
sub load_print {
my ($self) = @_;
return if $self->_loaded;
# we require that there's at least one object and the posSlice step
# is performed on all of them (this ensures that _shifted_copies was
@ -112,6 +120,7 @@ sub reload_print {
$self->canvas->load_print_object_toolpaths($object);
}
$self->canvas->zoom_to_volumes;
$self->_loaded(1);
}
}