From 2678b4dcf53e5a9cb1cf074950d90bd15f0b21e4 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Thu, 28 Sep 2023 18:30:56 +0200 Subject: [PATCH] Use new QNativeIpcKey based QSharedMemory constructor with Qt 6.6 and higher Switch to the new QNativeIpcKey based QSharedMemory constructor with Qt 6.6 and higher, the old constructor will be deprecated. This also makes the library work again with the upcoming Qt 6.6 release and higher. However, there are still issues with releasing the existing memory in cases where the application is forcefully quit or crashed. --- singleapplication.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/singleapplication.cpp b/singleapplication.cpp index 3e8fcb5..95c4d18 100644 --- a/singleapplication.cpp +++ b/singleapplication.cpp @@ -67,12 +67,20 @@ SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSeconda #ifdef Q_OS_UNIX // By explicitly attaching it and then deleting it we make sure that the // memory is deleted even after the process has crashed on Unix. +#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0) + d->memory = new QSharedMemory( QNativeIpcKey( d->blockServerName ) ); +#else d->memory = new QSharedMemory( d->blockServerName ); +#endif d->memory->attach(); delete d->memory; #endif // Guarantee thread safe behaviour with a shared memory block. +#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0) + d->memory = new QSharedMemory( QNativeIpcKey( d->blockServerName ) ); +#else d->memory = new QSharedMemory( d->blockServerName ); +#endif // Create a shared memory block if( d->memory->create( sizeof( InstancesInfo ) )){