aboutsummaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
Diffstat (limited to 'src/app')
-rw-r--r--src/app/qmmpstarter.cpp30
-rw-r--r--src/app/qmmpstarter.h6
2 files changed, 35 insertions, 1 deletions
diff --git a/src/app/qmmpstarter.cpp b/src/app/qmmpstarter.cpp
index 36bb87a3d..d01dd79a6 100644
--- a/src/app/qmmpstarter.cpp
+++ b/src/app/qmmpstarter.cpp
@@ -37,7 +37,7 @@
#include "qmmpstarter.h"
#include "builtincommandlineoption.h"
-#ifdef Q_OS_WIN32
+#ifdef Q_OS_WIN
#define UDS_PATH QString("qmmp")
#else
#define UDS_PATH QString("/tmp/qmmp.sock.%1").arg(getuid()).toAscii().constData()
@@ -50,6 +50,9 @@ QMMPStarter::QMMPStarter(int argc,char **argv, QObject* parent) : QObject(parent
m_player = 0;
m_core = 0;
m_ui = 0;
+#ifdef Q_OS_WIN
+ m_named_mutex = 0;
+#endif
m_option_manager = new BuiltinCommandLineOption(this);
QStringList tmp;
for (int i = 1;i < argc;i++)
@@ -86,6 +89,26 @@ QMMPStarter::QMMPStarter(int argc,char **argv, QObject* parent) : QObject(parent
m_socket = new QLocalSocket(this);
bool noStart = commands.keys().contains("--no-start");
+#ifdef Q_OS_WIN
+ //Windows IPC implementation (named mutex and named pipe)
+ m_named_mutex = CreateMutexA(NULL, TRUE, "QMMP-403cd318-cc7b-4622-8dfd-df18d1e70057");
+ if(GetLastError() == NO_ERROR && !noStart)
+ {
+ m_server->listen (UDS_PATH);
+ startPlayer();
+ }
+ else
+ {
+ m_socket->connectToServer(UDS_PATH); //connecting
+ m_socket->waitForConnected();
+ if(!m_socket->isValid()) //invalid connection
+ {
+ qWarning("QMMPStarter: unable to connect to server");
+ exit(0);
+ }
+ writeCommand();
+ }
+#else
if(!noStart && m_server->listen (UDS_PATH)) //trying to create server
{
startPlayer();
@@ -118,12 +141,17 @@ QMMPStarter::QMMPStarter(int argc,char **argv, QObject* parent) : QObject(parent
}
else
exit(0);
+#endif
}
QMMPStarter::~QMMPStarter()
{
if (m_ui)
delete m_ui;
+#ifdef Q_OS_WIN
+ if(m_named_mutex)
+ ReleaseMutex(m_named_mutex);
+#endif
}
void QMMPStarter::startPlayer()
diff --git a/src/app/qmmpstarter.h b/src/app/qmmpstarter.h
index 69003e568..b84e8013f 100644
--- a/src/app/qmmpstarter.h
+++ b/src/app/qmmpstarter.h
@@ -24,6 +24,9 @@
#include <QObject>
#include <QAbstractSocket>
#include <QStringList>
+#ifdef Q_OS_WIN
+#include <windows.h>
+#endif
class QLocalServer;
class QLocalSocket;
@@ -73,6 +76,9 @@ private:
BuiltinCommandLineOption* m_option_manager;
QLocalServer *m_server;
QLocalSocket *m_socket;
+#ifdef Q_OS_WIN
+ HANDLE m_named_mutex;
+#endif
};
#endif