changeset 119:5876f3e9c677

Fix server invocations from client code
author Chris Cannam <c.cannam@qmul.ac.uk>
date Thu, 27 Oct 2016 12:04:44 +0100
parents ff3fd8d1b2dc
children 88ecaf8b163a
files vamp-client/AutoPlugin.h vamp-client/ProcessQtTransport.h vamp-client/client.cpp
diffstat 3 files changed, 7 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/vamp-client/AutoPlugin.h	Thu Oct 27 12:01:37 2016 +0100
+++ b/vamp-client/AutoPlugin.h	Thu Oct 27 12:04:44 2016 +0100
@@ -52,7 +52,7 @@
                float inputSampleRate,
                int adapterFlags) :
         Vamp::Plugin(inputSampleRate),
-        m_transport(serverName),
+        m_transport(serverName, "capnp"),
         m_client(&m_transport)
     {
         LoadRequest req;
--- a/vamp-client/ProcessQtTransport.h	Thu Oct 27 12:01:37 2016 +0100
+++ b/vamp-client/ProcessQtTransport.h	Thu Oct 27 12:04:44 2016 +0100
@@ -58,21 +58,15 @@
 class ProcessQtTransport : public SynchronousTransport
 {
 public:
-    ProcessQtTransport(std::string processName) :
+    ProcessQtTransport(std::string processName, std::string formatArg) :
         m_completenessChecker(0) {
+
         m_process = new QProcess();
         m_process->setReadChannel(QProcess::StandardOutput);
         m_process->setProcessChannelMode(QProcess::ForwardedErrorChannel);
-        QString name(QString::fromStdString(processName));
 
-        // The second argument here is vital, otherwise we get a
-        // different start() overload which parses all command args
-        // out of its first argument only and therefore fails when
-        // name has a space in it. This is such a gotcha that Qt5.6
-        // even introduced a QT_NO_PROCESS_COMBINED_ARGUMENT_START
-        // build flag to disable that overload. Unfortunately I only
-        // discovered that after wasting almost a day on it.
-        m_process->start(name, QStringList());
+        m_process->start(QString::fromStdString(processName),
+                         { QString::fromStdString(formatArg) });
         
         if (!m_process->waitForStarted()) {
             if (m_process->state() == QProcess::NotRunning) {
--- a/vamp-client/client.cpp	Thu Oct 27 12:01:37 2016 +0100
+++ b/vamp-client/client.cpp	Thu Oct 27 12:04:44 2016 +0100
@@ -44,7 +44,8 @@
 
 int main(int, char **)
 {
-    piper_vamp::client::ProcessQtTransport transport("../bin/piper-vamp-server");
+    piper_vamp::client::ProcessQtTransport transport("../bin/piper-vamp-server",
+                                                     "capnp");
     piper_vamp::client::CapnpRRClient client(&transport);
 
     piper_vamp::ListResponse lr = client.listPluginData();