switching from slicer to gcode viewer - unlocking lock file
This commit is contained in:
parent
d33e97abb3
commit
453408143f
4 changed files with 24 additions and 1 deletions
|
@ -578,7 +578,7 @@ int CLI::run(int argc, char **argv)
|
||||||
GUI::GUI_App *gui = new GUI::GUI_App();
|
GUI::GUI_App *gui = new GUI::GUI_App();
|
||||||
#endif // ENABLE_GCODE_VIEWER
|
#endif // ENABLE_GCODE_VIEWER
|
||||||
|
|
||||||
if(!start_as_gcodeviewer) { // gcode viewer is currently not performing instance check
|
if(gui->get_app_mode() != GUI::GUI_App::EAppMode::GCodeViewer){ // gcode viewer is currently not performing instance check
|
||||||
bool gui_single_instance_setting = gui->app_config->get("single_instance") == "1";
|
bool gui_single_instance_setting = gui->app_config->get("single_instance") == "1";
|
||||||
if (Slic3r::instance_check(argc, argv, gui_single_instance_setting)) {
|
if (Slic3r::instance_check(argc, argv, gui_single_instance_setting)) {
|
||||||
//TODO: do we have delete gui and other stuff?
|
//TODO: do we have delete gui and other stuff?
|
||||||
|
|
|
@ -1718,6 +1718,7 @@ void GUI_App::OSXStoreOpenFiles(const wxArrayString &fileNames)
|
||||||
// Opening PrusaSlicer by drag & dropping a G-Code onto PrusaSlicer icon in Finder,
|
// Opening PrusaSlicer by drag & dropping a G-Code onto PrusaSlicer icon in Finder,
|
||||||
// just G-codes were passed. Switch to G-code viewer mode.
|
// just G-codes were passed. Switch to G-code viewer mode.
|
||||||
m_app_mode = EAppMode::GCodeViewer;
|
m_app_mode = EAppMode::GCodeViewer;
|
||||||
|
unlock_lockfile(get_instance_hash_string() + ".lock", data_dir() + "/cache/");
|
||||||
if(app_config != nullptr)
|
if(app_config != nullptr)
|
||||||
delete app_config;
|
delete app_config;
|
||||||
app_config = nullptr;
|
app_config = nullptr;
|
||||||
|
|
|
@ -264,6 +264,26 @@ bool instance_check(int argc, char** argv, bool app_config_single_instance)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
bool unlock_lockfile(const std::string& name, const std::string& path)
|
||||||
|
{
|
||||||
|
std::string dest_dir = path + name;
|
||||||
|
//BOOST_LOG_TRIVIAL(debug) << "full lock path: " << dest_dir;
|
||||||
|
struct flock fl;
|
||||||
|
int fdlock;
|
||||||
|
fl.l_type = F_UNLCK;
|
||||||
|
fl.l_whence = SEEK_SET;
|
||||||
|
fl.l_start = 0;
|
||||||
|
fl.l_len = 1;
|
||||||
|
if ((fdlock = open(dest_dir.c_str(), O_WRONLY | O_CREAT, 0666)) == -1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (fcntl(fdlock, F_SETLK, &fl) == -1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif //__APPLE__
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
wxDEFINE_EVENT(EVT_LOAD_MODEL_OTHER_INSTANCE, LoadFromOtherInstanceEvent);
|
wxDEFINE_EVENT(EVT_LOAD_MODEL_OTHER_INSTANCE, LoadFromOtherInstanceEvent);
|
||||||
|
|
|
@ -28,6 +28,8 @@ bool instance_check(int argc, char** argv, bool app_config_single_instance);
|
||||||
// apple implementation of inner functions of instance_check
|
// apple implementation of inner functions of instance_check
|
||||||
// in InstanceCheckMac.mm
|
// in InstanceCheckMac.mm
|
||||||
void send_message_mac(const std::string& msg, const std::string& version);
|
void send_message_mac(const std::string& msg, const std::string& version);
|
||||||
|
|
||||||
|
bool unlock_lockfile(const std::string& name, const std::string& path);
|
||||||
#endif //__APPLE__
|
#endif //__APPLE__
|
||||||
|
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
Loading…
Reference in a new issue