---- qtsingleapplication-2.6_1-opensource/src/qtlocalpeer.cpp 2009-12-16 10:43:33.000000000 +0000
-+++ qtsingleapplication/src/qtlocalpeer.cpp 2010-07-10 16:26:50.000000000 +0100
-@@ -48,6 +48,7 @@
+Additional API from clementine:
+https://github.com/clementine-player/Clementine/blob/master/3rdparty/qtsingleapplication/qtsingleapplication.patch
+
+https://github.com/clementine-player/Clementine/issues/291#issuecomment-29984507
+qtsingleapplication: "Open With" on the file browser, and passing filenames as arguments in the command line
+Controlling playback with the commandline as well (--pause, --play, etc.)
+
+--- QtSingleApplication-2.6.1/src/qtlocalpeer.cpp~ 2015-02-23 00:06:20.000000000 +0200
++++ QtSingleApplication-2.6.1/src/qtlocalpeer.cpp 2015-02-23 00:08:51.179884397 +0200
+@@ -42,6 +42,7 @@
#include "qtlocalpeer.h"
- #include <QtCore/QCoreApplication>
- #include <QtCore/QTime>
+ #include <QCoreApplication>
+ #include <QTime>
+#include <QtDebug>
#if defined(Q_OS_WIN)
- #include <QtCore/QLibrary>
+ #include <QLibrary>
@@ -138,6 +137,11 @@
bool QtLocalPeer::sendMessage(const QString &message, int timeout)
bool res = socket.waitForBytesWritten(timeout);
res &= socket.waitForReadyRead(timeout); // wait for ack
res &= (socket.read(qstrlen(ack)) == ack);
-@@ -195,9 +198,9 @@
+@@ -189,10 +190,10 @@
delete socket;
return;
}
- QString message(QString::fromUtf8(uMsg));
socket->write(ack, qstrlen(ack));
socket->waitForBytesWritten(1000);
+ socket->waitForDisconnected(1000); // make sure client reads ack
delete socket;
- emit messageReceived(message); //### (might take a long time to return)
+ emit messageReceived(uMsg); //### (might take a long time to return)
+ emit messageReceived(QString::fromUtf8(uMsg));
}
---- qtsingleapplication-2.6_1-opensource/src/qtlocalpeer.h 2009-12-16 10:43:33.000000000 +0000
-+++ qtsingleapplication/src/qtlocalpeer.h 2010-07-10 16:26:16.000000000 +0100
-@@ -61,11 +59,13 @@
+--- QtSingleApplication-2.6.1/src/qtlocalpeer.h~ 2015-02-23 00:12:20.000000000 +0200
++++ QtSingleApplication-2.6.1/src/qtlocalpeer.h 2015-02-23 00:19:44.407242485 +0200
+@@ -55,11 +55,13 @@
QtLocalPeer(QObject *parent = 0, const QString &appId = QString());
bool isClient();
bool sendMessage(const QString &message, int timeout);
protected Q_SLOTS:
void receiveConnection();
--- qtsingleapplication-2.6_1-opensource/src/qtlockedfile_win.cpp 2009-12-16 10:43:33.000000000 +0000
-+++ qtsingleapplication/src/qtlockedfile_win.cpp 2010-07-10 16:26:33.000000000 +0100
++++ qtsingleapplication/qtlockedfile_win.cpp 2010-07-10 16:26:33.000000000 +0100
@@ -65,7 +65,7 @@
Qt::HANDLE mutex;
if (!mutex) {
if (GetLastError() != ERROR_FILE_NOT_FOUND)
--- qtsingleapplication-2.6_1-opensource/src/qtsingleapplication.cpp 2009-12-16 10:43:33.000000000 +0000
-+++ qtsingleapplication/src/qtsingleapplication.cpp 2010-07-10 16:23:53.000000000 +0100
++++ qtsingleapplication/qtsingleapplication.cpp 2010-07-10 16:23:53.000000000 +0100
@@ -144,6 +144,7 @@
actWin = 0;
peer = new QtLocalPeer(this, appId);
--- qtsingleapplication-2.6_1-opensource/src/qtsingleapplication.h 2009-12-16 10:43:33.000000000 +0000
-+++ qtsingleapplication/src/qtsingleapplication.h 2010-07-10 16:23:53.000000000 +0100
++++ qtsingleapplication/qtsingleapplication.h 2010-07-10 16:23:53.000000000 +0100
@@ -91,11 +91,13 @@
public Q_SLOTS:
private:
--- qtsingleapplication-2.6_1-opensource/src/qtsinglecoreapplication.cpp 2009-12-16 10:43:33.000000000 +0000
-+++ qtsingleapplication/src/qtsinglecoreapplication.cpp 2010-07-10 16:32:33.000000000 +0100
++++ qtsingleapplication/qtsinglecoreapplication.cpp 2010-07-10 16:32:33.000000000 +0100
@@ -81,6 +81,7 @@
{
peer = new QtLocalPeer(this);
/*!
Returns the application identifier. Two processes with the same
--- qtsingleapplication-2.6_1-opensource/src/qtsinglecoreapplication.h 2009-12-16 10:43:33.000000000 +0000
-+++ qtsingleapplication/src/qtsinglecoreapplication.h 2010-07-10 16:32:33.000000000 +0100
++++ qtsingleapplication/qtsinglecoreapplication.h 2010-07-10 16:32:33.000000000 +0100
@@ -62,10 +62,12 @@
public Q_SLOTS: