From 9558ed242c1f9dbcda9edb099bb2a98ed492892d Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Mon, 20 Mar 2023 13:49:43 +0800 Subject: [PATCH] FIX: backup switch take effect Change-Id: Ie9740d7f985ae6adc2778eaac0a80cf7a94c98c4 --- src/libslic3r/AppConfig.cpp | 2 +- src/libslic3r/Format/bbs_3mf.cpp | 5 ++++- src/slic3r/GUI/MainFrame.cpp | 12 ++++++++---- src/slic3r/GUI/Preferences.cpp | 9 +++++++++ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 6b1478e59..4a00ce46d 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -286,7 +286,7 @@ void AppConfig::set_defaults() } if (get("backup_switch").empty()) { - set_bool("backup_switch", false); + set_bool("backup_switch", true); } if (get("backup_interval").empty()) { diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 77d40d766..d6d911065 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -7397,7 +7397,10 @@ public: while (true) { while (m_tasks.empty()) { - m_cond.timed_wait(lock, m_next_backup); + if (m_interval > 0) + m_cond.timed_wait(lock, m_next_backup); + else + m_cond.wait(lock); if (m_interval > 0 && boost::get_system_time() > m_next_backup) { m_tasks.push_back({ Backup, 0, std::string(), nullptr, ++m_task_seq }); m_next_backup += boost::posix_time::seconds(m_interval); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 0550f8ac4..fe490c105 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -488,10 +488,14 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ update_slice_print_status(eEventSliceUpdate, true, true); // BBS: backup project - std::string backup_interval; - if (!wxGetApp().app_config->get("", "backup_interval", backup_interval)) - backup_interval = "10"; - Slic3r::set_backup_interval(boost::lexical_cast(backup_interval)); + if (wxGetApp().app_config->get("backup_switch") == "true") { + std::string backup_interval; + if (!wxGetApp().app_config->get("", "backup_interval", backup_interval)) + backup_interval = "10"; + Slic3r::set_backup_interval(boost::lexical_cast(backup_interval)); + } else { + Slic3r::set_backup_interval(0); + } Slic3r::set_backup_callback([this](int action) { if (action == 0) { wxPostEvent(this, wxCommandEvent(EVT_BACKUP_POST)); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 65d0a30f5..2901ca9ec 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -415,6 +415,9 @@ wxBoxSizer *PreferencesDialog::create_item_backup_input(wxString title, wxWindow m_backup_interval_time = input->GetTextCtrl()->GetValue(); app_config->set("backup_interval", std::string(m_backup_interval_time.mb_str())); app_config->save(); + long backup_interval = 0; + m_backup_interval_time.ToLong(&backup_interval); + Slic3r::set_backup_interval(backup_interval); e.Skip(); }); @@ -422,6 +425,9 @@ wxBoxSizer *PreferencesDialog::create_item_backup_input(wxString title, wxWindow m_backup_interval_time = input->GetTextCtrl()->GetValue(); app_config->set("backup_interval", std::string(m_backup_interval_time.mb_str())); app_config->save(); + long backup_interval = 0; + m_backup_interval_time.ToLong(&backup_interval); + Slic3r::set_backup_interval(backup_interval); e.Skip(); }); @@ -553,6 +559,9 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxWindow *pa // backup if (param == "backup_switch") { bool pbool = app_config->get("backup_switch") == "true" ? true : false; + std::string backup_interval = "10"; + app_config->get("backup_interval", backup_interval); + Slic3r::set_backup_interval(pbool ? boost::lexical_cast(backup_interval) : 0); if (m_backup_interval_textinput != nullptr) { m_backup_interval_textinput->Enable(pbool); } }