Mercurial > hg > svcore
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; }