From e96241265e31264eaa96fda34c7a69c1f1ecf6c0 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 23 Feb 2020 13:40:04 +0100 Subject: Use third_party singleapplication helper This may still not raise the application correctly on some WMs, because they don't allow disturbing the user with windows popping up. I don't think we want to work around that. fixes #84 fixes #113 --- src/RunGuard.cpp | 84 -------------------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 src/RunGuard.cpp (limited to 'src/RunGuard.cpp') diff --git a/src/RunGuard.cpp b/src/RunGuard.cpp deleted file mode 100644 index 75833eb7..00000000 --- a/src/RunGuard.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include "RunGuard.h" - -#include - -namespace { - -QString -generateKeyHash(const QString &key, const QString &salt) -{ - QByteArray data; - - data.append(key.toUtf8()); - data.append(salt.toUtf8()); - data = QCryptographicHash::hash(data, QCryptographicHash::Sha1).toHex(); - - return data; -} -} - -RunGuard::RunGuard(const QString &key) - : key(key) - , memLockKey(generateKeyHash(key, "_memLockKey")) - , sharedmemKey(generateKeyHash(key, "_sharedmemKey")) - , sharedMem(sharedmemKey) - , memLock(memLockKey, 1) -{ - memLock.acquire(); - { - // Fix for *nix: http://habrahabr.ru/post/173281/ - QSharedMemory fix(sharedmemKey); - fix.attach(); - } - - memLock.release(); -} - -RunGuard::~RunGuard() { release(); } - -bool -RunGuard::isAnotherRunning() -{ - if (sharedMem.isAttached()) - return false; - - memLock.acquire(); - const bool isRunning = sharedMem.attach(); - - if (isRunning) - sharedMem.detach(); - - memLock.release(); - - return isRunning; -} - -bool -RunGuard::tryToRun() -{ - // Extra check - if (isAnotherRunning()) - return false; - - memLock.acquire(); - const bool result = sharedMem.create(sizeof(quint64)); - memLock.release(); - - if (!result) { - release(); - return false; - } - - return true; -} - -void -RunGuard::release() -{ - memLock.acquire(); - - if (sharedMem.isAttached()) - sharedMem.detach(); - - memLock.release(); -} -- cgit 1.5.1