From 3c8d9be77e38abd0335a5cfca228f73b757c9eb4 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Mon, 29 Aug 2022 17:14:08 +0800 Subject: [PATCH] FIX: fix crash when exiting studio Change-Id: I91f6cde208e044aae20b40e4b79159f6cd46356c Signed-off-by: Stone Li --- src/slic3r/GUI/DeviceManager.cpp | 4 ++++ src/slic3r/GUI/SelectMachine.cpp | 14 +++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index c3c226b76..27f5c9e5c 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2981,11 +2981,15 @@ std::map DeviceManager::get_my_machine_list() std::map result; for (auto it = userMachineList.begin(); it != userMachineList.end(); it++) { + if (!it->second) + continue; if (!it->second->is_lan_mode_printer()) result.insert(std::make_pair(it->first, it->second)); } for (auto it = localMachineList.begin(); it != localMachineList.end(); it++) { + if (!it->second) + continue; if (it->second->has_access_right() && it->second->is_avaliable() && it->second->is_lan_mode_printer()) { // remove redundant in userMachineList if (result.find(it->first) == result.end()) { diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 62481fb11..cddc637a2 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -279,7 +279,9 @@ void MachineObjectPanel::on_mouse_left_up(wxMouseEvent &evt) event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } else { - wxGetApp().mainframe->jump_to_monitor(m_info->dev_id); + if (m_info) { + wxGetApp().mainframe->jump_to_monitor(m_info->dev_id); + } //wxGetApp().mainframe->SetFocus(); wxCommandEvent event(EVT_DISSMISS_MACHINE_LIST); event.SetEventObject(this->GetParent()); @@ -287,7 +289,7 @@ void MachineObjectPanel::on_mouse_left_up(wxMouseEvent &evt) } return; } - if (m_info->is_lan_mode_printer()) { + if (m_info && m_info->is_lan_mode_printer()) { if (m_info->has_access_right() && m_info->is_avaliable()) { wxGetApp().mainframe->jump_to_monitor(m_info->dev_id); } else { @@ -299,7 +301,7 @@ void MachineObjectPanel::on_mouse_left_up(wxMouseEvent &evt) wxGetApp().mainframe->jump_to_monitor(m_info->dev_id); } } else { - if (m_info->is_lan_mode_printer()) { + if (m_info && m_info->is_lan_mode_printer()) { wxCommandEvent event(EVT_CONNECT_LAN_PRINT); event.SetEventObject(this); wxPostEvent(this, event); @@ -2233,7 +2235,8 @@ EditDevNameDialog::~EditDevNameDialog() {} void EditDevNameDialog::set_machine_obj(MachineObject *obj) { m_info = obj; - m_textCtr->GetTextCtrl()->SetValue(from_u8(m_info->dev_name)); + if (m_info) + m_textCtr->GetTextCtrl()->SetValue(from_u8(m_info->dev_name)); } void EditDevNameDialog::on_dpi_changed(const wxRect &suggested_rect) @@ -2291,7 +2294,8 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) if (dev) { auto utf8_str = new_dev_name.ToUTF8(); auto name = std::string(utf8_str.data(), utf8_str.length()); - dev->modify_device_name(m_info->dev_id, name); + if (m_info) + dev->modify_device_name(m_info->dev_id, name); } DPIDialog::EndModal(wxID_CLOSE); }