@@ -987,30 +987,24 @@ private slots:
987987int main (int argc, char *argv[]) {
988988 QApplication app (argc, argv);
989989
990- QSharedMemory sharedMemory;
991- sharedMemory.setKey (" TcpServer-Key2" );
990+ QLocalServer::removeServer (" app_server" );
992991
993- // Check if app is already open
994- if (sharedMemory.create (1 ) == false )
995- {
996- LOG_INFO (" Another instance already running! Opening App Window Instead" );
997- QLocalSocket socket;
998- // Connect to the original app, then trigger the reopen signal
999- socket.connectToServer (" app_server" );
1000- if (socket.waitForConnected (500 )) {
1001- socket.write (" reopen" );
1002- socket.flush ();
1003- socket.waitForBytesWritten (500 );
1004- socket.disconnectFromServer ();
1005- app.exit (); // exit; process already running
1006- return 0 ;
1007- }
1008- else
1009- {
1010- // Failed connection, log and open the app (assume it's not running)
1011- LOG_ERROR (" Failed to connect to the original app instance. Assuming it is not running." );
1012- LOG_DEBUG (" Socket error: " << socket.errorString ());
1013- }
992+ QFile stale (" /tmp/app_server" );
993+ if (stale.exists ())
994+ stale.remove ();
995+
996+ QLocalSocket socket_check;
997+ socket_check.connectToServer (" app_server" );
998+
999+ if (socket_check.waitForConnected (300 )) {
1000+ LOG_INFO (" Another instance already running! Reopening window..." );
1001+
1002+ socket_check.write (" reopen" );
1003+ socket_check.flush ();
1004+ socket_check.waitForBytesWritten (200 );
1005+ socket_check.disconnectFromServer ();
1006+
1007+ return 0 ;
10141008 }
10151009 app.setDesktopFileName (" me.kavishdevar.librepods" );
10161010 app.setQuitOnLastWindowClosed (false );
@@ -1092,8 +1086,16 @@ int main(int argc, char *argv[]) {
10921086 });
10931087
10941088 QObject::connect (&app, &QCoreApplication::aboutToQuit, [&]() {
1095- LOG_DEBUG (" Application is about to quit. Cleaning up..." );
1096- sharedMemory.detach ();
1089+ LOG_DEBUG (" Application quitting. Cleaning up local server..." );
1090+
1091+ if (server.isListening ()) {
1092+ server.close ();
1093+ }
1094+
1095+ QLocalServer::removeServer (" app_server" );
1096+ QFile stale (" /tmp/app_server" );
1097+ if (stale.exists ())
1098+ stale.remove ();
10971099 });
10981100 return app.exec ();
10991101}
0 commit comments