Deregister the update callback on end of the application.
This fixes a crash on exit.
This commit is contained in:
parent
c13cd284e4
commit
ea163edc41
5 changed files with 9 additions and 20 deletions
|
@ -107,6 +107,7 @@ sub new {
|
||||||
wxTheApp->{app_config}->save;
|
wxTheApp->{app_config}->save;
|
||||||
$self->{plater}->{print} = undef if($self->{plater});
|
$self->{plater}->{print} = undef if($self->{plater});
|
||||||
Slic3r::GUI::_3DScene::remove_all_canvases();
|
Slic3r::GUI::_3DScene::remove_all_canvases();
|
||||||
|
Slic3r::GUI::deregister_on_request_update_callback();
|
||||||
# propagate event
|
# propagate event
|
||||||
$event->Skip;
|
$event->Skip;
|
||||||
});
|
});
|
||||||
|
|
|
@ -145,11 +145,6 @@ sub new {
|
||||||
$self->rotate(rad2deg($angle_z), Z, 'absolute');
|
$self->rotate(rad2deg($angle_z), Z, 'absolute');
|
||||||
};
|
};
|
||||||
|
|
||||||
# callback to call schedule_background_process
|
|
||||||
my $on_request_update = sub {
|
|
||||||
$self->schedule_background_process;
|
|
||||||
};
|
|
||||||
|
|
||||||
# callback to update object's geometry info while using gizmos
|
# callback to update object's geometry info while using gizmos
|
||||||
my $on_update_geometry_info = sub {
|
my $on_update_geometry_info = sub {
|
||||||
my ($size_x, $size_y, $size_z, $scale_factor) = @_;
|
my ($size_x, $size_y, $size_z, $scale_factor) = @_;
|
||||||
|
@ -208,7 +203,7 @@ sub new {
|
||||||
Slic3r::GUI::_3DScene::register_on_viewport_changed_callback($self->{canvas3D}, sub { Slic3r::GUI::_3DScene::set_viewport_from_scene($self->{preview3D}->canvas, $self->{canvas3D}); });
|
Slic3r::GUI::_3DScene::register_on_viewport_changed_callback($self->{canvas3D}, sub { Slic3r::GUI::_3DScene::set_viewport_from_scene($self->{preview3D}->canvas, $self->{canvas3D}); });
|
||||||
}
|
}
|
||||||
|
|
||||||
Slic3r::_GUI::register_on_request_update_callback($on_request_update);
|
Slic3r::GUI::register_on_request_update_callback(sub { $self->schedule_background_process; });
|
||||||
|
|
||||||
# # Initialize 2D preview canvas
|
# # Initialize 2D preview canvas
|
||||||
# $self->{canvas} = Slic3r::GUI::Plater::2D->new($self->{preview_notebook}, wxDefaultSize, $self->{objects}, $self->{model}, $self->{config});
|
# $self->{canvas} = Slic3r::GUI::Plater::2D->new($self->{preview_notebook}, wxDefaultSize, $self->{objects}, $self->{model}, $self->{config});
|
||||||
|
|
|
@ -920,11 +920,6 @@ ConfigOptionsGroup* get_optgroup()
|
||||||
return m_optgroup.get();
|
return m_optgroup.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void register_on_request_update_callback(void* callback) {
|
|
||||||
if (callback != nullptr)
|
|
||||||
g_on_request_update_callback.register_callback(callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
wxButton* get_wiping_dialog_button()
|
wxButton* get_wiping_dialog_button()
|
||||||
{
|
{
|
||||||
return g_wiping_dialog_button;
|
return g_wiping_dialog_button;
|
||||||
|
|
|
@ -172,8 +172,8 @@ wxString from_u8(const std::string &str);
|
||||||
|
|
||||||
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer);
|
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer);
|
||||||
|
|
||||||
|
// Callback to trigger a configuration update timer on the Plater.
|
||||||
static PerlCallback g_on_request_update_callback;
|
static PerlCallback g_on_request_update_callback;
|
||||||
void register_on_request_update_callback(void* callback);
|
|
||||||
|
|
||||||
ConfigOptionsGroup* get_optgroup();
|
ConfigOptionsGroup* get_optgroup();
|
||||||
wxButton* get_wiping_dialog_button();
|
wxButton* get_wiping_dialog_button();
|
||||||
|
|
|
@ -105,11 +105,9 @@ void fix_model_by_win10_sdk_gui(ModelObject *model_object_src, Print *print, Mod
|
||||||
void set_3DScene(SV *scene)
|
void set_3DScene(SV *scene)
|
||||||
%code%{ Slic3r::GUI::set_3DScene((_3DScene *)wxPli_sv_2_object(aTHX_ scene, "Slic3r::Model::3DScene") ); %};
|
%code%{ Slic3r::GUI::set_3DScene((_3DScene *)wxPli_sv_2_object(aTHX_ scene, "Slic3r::Model::3DScene") ); %};
|
||||||
|
|
||||||
%package{Slic3r::_GUI};
|
void register_on_request_update_callback(SV* callback)
|
||||||
%{
|
%code%{ Slic3r::GUI::g_on_request_update_callback.register_callback(callback); %};
|
||||||
void
|
|
||||||
register_on_request_update_callback(callback)
|
void deregister_on_request_update_callback()
|
||||||
SV *callback;
|
%code%{ Slic3r::GUI::g_on_request_update_callback.deregister_callback(); %};
|
||||||
CODE:
|
|
||||||
Slic3r::GUI::register_on_request_update_callback((void*)callback);
|
|
||||||
%}
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue