diff data/osc/OSCQueue.cpp @ 1713:978c143c767f

Merge from branch single-point
author Chris Cannam
date Fri, 17 May 2019 10:02:43 +0100
parents c077a97d055f
children 1318e069906b
line wrap: on
line diff
--- a/data/osc/OSCQueue.cpp	Thu May 16 12:54:58 2019 +0100
+++ b/data/osc/OSCQueue.cpp	Fri May 17 10:02:43 2019 +0100
@@ -23,6 +23,7 @@
 #include "base/Profiler.h"
 
 #include <iostream>
+#include <QThread>
 
 #define OSC_MESSAGE_QUEUE_SIZE 1023
 
@@ -89,24 +90,37 @@
 
 #endif
    
-OSCQueue::OSCQueue() :
+OSCQueue::OSCQueue(bool withNetworkPort) :
 #ifdef HAVE_LIBLO
     m_thread(nullptr),
 #endif
+    m_withPort(withNetworkPort),
     m_buffer(OSC_MESSAGE_QUEUE_SIZE)
 {
     Profiler profiler("OSCQueue::OSCQueue");
 
 #ifdef HAVE_LIBLO
-    m_thread = lo_server_thread_new(nullptr, oscError);
+    if (m_withPort) {
+        m_thread = lo_server_thread_new(nullptr, oscError);
 
-    lo_server_thread_add_method(m_thread, nullptr, nullptr,
-                                oscMessageHandler, this);
+        lo_server_thread_add_method(m_thread, nullptr, nullptr,
+                                    oscMessageHandler, this);
 
-    lo_server_thread_start(m_thread);
+        lo_server_thread_start(m_thread);
 
-    cout << "OSCQueue::OSCQueue: Base OSC URL is "
-              << lo_server_thread_get_url(m_thread) << endl;
+        SVDEBUG << "OSCQueue::OSCQueue: Started OSC thread, URL is "
+             << lo_server_thread_get_url(m_thread) << endl;
+            
+        cout << "OSCQueue::OSCQueue: Base OSC URL is "
+             << lo_server_thread_get_url(m_thread) << endl;
+    }
+#else
+    if (m_withPort) {
+        SVDEBUG << "OSCQueue::OSCQueue: Note: OSC port support not "
+                << "compiled in; not opening port, falling back to "
+                << "internal-only queue" << endl;
+        m_withPort = false;
+    }
 #endif
 }
 
@@ -126,11 +140,15 @@
 bool
 OSCQueue::isOK() const
 {
+    if (!m_withPort) {
+        return true;
+    } else {
 #ifdef HAVE_LIBLO
-    return (m_thread != nullptr);
+        return (m_thread != nullptr);
 #else
-    return false;
+        return false;
 #endif
+    }
 }
 
 QString
@@ -138,7 +156,9 @@
 {
     QString url = "";
 #ifdef HAVE_LIBLO
-    url = lo_server_thread_get_url(m_thread);
+    if (m_thread) {
+        url = lo_server_thread_get_url(m_thread);
+    }
 #endif
     return url;
 }
@@ -155,6 +175,9 @@
     OSCMessage *message = m_buffer.readOne();
     OSCMessage rmessage = *message;
     delete message;
+    SVDEBUG << "OSCQueue::readMessage: In thread "
+            << QThread::currentThreadId() << ": message follows:\n"
+            << rmessage.toString() << endl;
     return rmessage;
 }
 
@@ -180,8 +203,9 @@
     OSCMessage *mp = new OSCMessage(message);
     m_buffer.write(&mp, 1);
     SVDEBUG << "OSCQueue::postMessage: Posted OSC message: target "
-              << message.getTarget() << ", target data " << message.getTargetData()
-              << ", method " << message.getMethod() << endl;
+            << message.getTarget() << ", target data "
+            << message.getTargetData() << ", method "
+            << message.getMethod() << endl;
     emit messagesAvailable();
 }
 
@@ -220,7 +244,8 @@
         return false;
     }
 
-    SVDEBUG << "OSCQueue::parseOSCPath: good path \"" << path              << "\"" << endl;
+    SVDEBUG << "OSCQueue::parseOSCPath: good path \"" << path
+            << "\"" << endl;
 
     return true;
 }