Skip to content

Commit

Permalink
Use new QNativeIpcKey based QSharedMemory constructor with Qt 6.6 and…
Browse files Browse the repository at this point in the history
… 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.
  • Loading branch information
jonaski committed Sep 28, 2023
1 parent e22a6bc commit 2678b4d
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions singleapplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 ) )){
Expand Down

0 comments on commit 2678b4d

Please sign in to comment.