aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/libLumina
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core/libLumina')
-rw-r--r--src-qt5/core/libLumina/LuminaSingleApplication.cpp29
-rw-r--r--src-qt5/core/libLumina/LuminaSingleApplication.h3
2 files changed, 24 insertions, 8 deletions
diff --git a/src-qt5/core/libLumina/LuminaSingleApplication.cpp b/src-qt5/core/libLumina/LuminaSingleApplication.cpp
index 379ac02d..0c04229c 100644
--- a/src-qt5/core/libLumina/LuminaSingleApplication.cpp
+++ b/src-qt5/core/libLumina/LuminaSingleApplication.cpp
@@ -18,14 +18,7 @@ LSingleApplication::LSingleApplication(int &argc, char **argv, QString appname)
this->setAttribute(Qt::AA_UseHighDpiPixmaps);
if(appname!="lumina-desktop"){ cTrans = LUtils::LoadTranslation(this, appname); }//save the translator for later
//Initialize a couple convenience internal variables
- cfile = QDir::tempPath()+"/.LSingleApp-%1-%2-%3";
- QString username = QString::number(getuid());
- //For locking the process use the official process name - not the user input (no masking)
- appname = this->applicationName();
- QString display = QString(getenv("DISPLAY"));
- if(display.startsWith(":")){ display.remove(0,1); }
- display = display.section(".",0,0);
- cfile = cfile.arg( username, appname, display );
+ cfile = getLockfileName(this->applicationName()); //do not allow masking the utility name
lockfile = new QLockFile(cfile+"-lock");
lockfile->setStaleLockTime(0); //long-lived processes
for(int i=1; i<argc; i++){
@@ -59,6 +52,26 @@ LSingleApplication::~LSingleApplication(){
}
}
+QString LSingleApplication::getLockfileName(QString appname){
+ QString path = QDir::tempPath()+"/.LSingleApp-%1-%2-%3";
+ QString username = QString::number(getuid());
+ QString display = QString(getenv("DISPLAY"));
+ if(display.startsWith(":")){ display.remove(0,1); }
+ display = display.section(".",0,0);
+ path = path.arg( username, appname, display );
+ return path;
+}
+
+void LSingleApplication::removeLocks(QString appname){
+ QString path = getLockfileName(appname);
+ if(QFile::exists(path+"-lock")){
+ QFile::remove(path+"-lock");
+ }
+ if(QFile::exists(path)){
+ QFile::remove(path);
+ }
+}
+
bool LSingleApplication::isPrimaryProcess(){
return (isActive || isBypass);
}
diff --git a/src-qt5/core/libLumina/LuminaSingleApplication.h b/src-qt5/core/libLumina/LuminaSingleApplication.h
index bacf5640..f8302c0d 100644
--- a/src-qt5/core/libLumina/LuminaSingleApplication.h
+++ b/src-qt5/core/libLumina/LuminaSingleApplication.h
@@ -35,6 +35,9 @@ public:
LSingleApplication(int &argc, char **argv, QString appname);
~LSingleApplication();
+ static QString getLockfileName(QString appname);
+ static void removeLocks(QString appname);
+
bool isPrimaryProcess();
QStringList inputlist; //in case the app wants access to modified inputs (relative path fixes and such)
bgstack15