diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 6b1478e59a..4a00ce46df 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 77d40d7667..d6d9110652 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 0550f8ac4c..fe490c1053 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 65d0a30f54..2901ca9ec7 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); } }