From c2a6faca68379e02dead9d6303e29fe1b9960994 Mon Sep 17 00:00:00 2001 From: Itay Grudev Date: Sun, 23 Apr 2017 14:31:32 +0300 Subject: Removed QMutex for thread safe behaviour and support for multiple SingleApplication instances Problem raised by @retmas in #24 --- singleapplication.cpp | 17 +---------------- singleapplication_p.h | 3 --- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/singleapplication.cpp b/singleapplication.cpp index 31e3f0f..54c2c2d 100644 --- a/singleapplication.cpp +++ b/singleapplication.cpp @@ -220,15 +220,6 @@ void SingleApplicationPrivate::connectToPrimary( int msecs, char connectionType #ifdef Q_OS_UNIX void SingleApplicationPrivate::crashHandler() { - // This guarantees the program will work even with multiple - // instances of SingleApplication in different threads. - // Which in my opinion is idiotic, but lets handle that too. - { - sharedMemMutex.lock(); - sharedMem.append( this ); - sharedMemMutex.unlock(); - } - // Handle any further termination signals to ensure the // QSharedMemory block is deleted even if the process crashes signal( SIGHUP, SingleApplicationPrivate::terminate ); // 1 @@ -249,15 +240,9 @@ void SingleApplicationPrivate::connectToPrimary( int msecs, char connectionType void SingleApplicationPrivate::terminate( int signum ) { - while( ! sharedMem.empty() ) { - delete sharedMem.back(); - sharedMem.pop_back(); - } + delete ((SingleApplication*)QApplication::instance())->d_ptr; ::exit( 128 + signum ); } - - QList SingleApplicationPrivate::sharedMem; - QMutex SingleApplicationPrivate::sharedMemMutex; #endif /** diff --git a/singleapplication_p.h b/singleapplication_p.h index 266cbea..833e731 100644 --- a/singleapplication_p.h +++ b/singleapplication_p.h @@ -32,7 +32,6 @@ #ifndef SINGLEAPPLICATION_P_H #define SINGLEAPPLICATION_P_H -#include #include #include #include @@ -59,8 +58,6 @@ public: #ifdef Q_OS_UNIX void crashHandler(); static void terminate( int signum ); - static QList sharedMem; - static QMutex sharedMemMutex; #endif QSharedMemory *memory; -- cgit v1.2.1