Browse Source

More NSM fixes

tags/1.9.4
falkTX 12 years ago
parent
commit
73eb8260e4
4 changed files with 34 additions and 4 deletions
  1. +5
    -0
      source/backend/CarlaStandalone.hpp
  2. +19
    -3
      source/backend/standalone/CarlaStandalone.cpp
  3. +4
    -1
      source/carla.py
  4. +6
    -0
      source/carla_backend.py

+ 5
- 0
source/backend/CarlaStandalone.hpp View File

@@ -694,6 +694,11 @@ CARLA_EXPORT const char* carla_get_host_osc_url_udp();
*/
CARLA_EXPORT void carla_nsm_announce(const char* url, const char* appName, int pid);

/*!
* Ready for handling NSM messages.
*/
CARLA_EXPORT void carla_nsm_ready();

/*!
* Reply to NSM open message.
* \see CALLBACK_NSM_OPEN


+ 19
- 3
source/backend/standalone/CarlaStandalone.cpp View File

@@ -2124,6 +2124,7 @@ public:
CarlaNSM()
: fServerThread(nullptr),
fReplyAddr(nullptr),
fIsReady(false),
fIsOpened(false),
fIsSaved(false)
{
@@ -2173,6 +2174,11 @@ public:
lo_address_free(addr);
}

void ready()
{
fIsReady = true;
}

void replyOpen()
{
fIsOpened = true;
@@ -2233,10 +2239,12 @@ protected:
std::strcat(data, ":");
std::strcat(data, clientId);

// wait max 6 secs for engine to start
for (int i=0; i < 60 && standalone.engine == nullptr; ++i)
// wait max 6 secs for host to init
for (int i=0; i < 60 && ! fIsReady; ++i)
carla_msleep(100);

fIsOpened = false;

standalone.callback(nullptr, CarlaBackend::CALLBACK_NSM_OPEN, 0, 0, 0, 0.0f, data);

// wait max 10 secs to open
@@ -2270,10 +2278,12 @@ protected:
if (fReplyAddr == nullptr)
return 1;

fIsSaved = false;

standalone.callback(nullptr, CarlaBackend::CALLBACK_NSM_SAVE, 0, 0, 0, 0.0f, nullptr);

// wait max 10 secs to save
for (int i=0; i < 100 && ! fIsOpened; ++i)
for (int i=0; i < 100 && ! fIsSaved; ++i)
carla_msleep(100);

#ifndef BUILD_ANSI_TEST
@@ -2297,6 +2307,7 @@ private:
lo_server_thread fServerThread;
lo_address fReplyAddr;

bool fIsReady; // used to startup, only once
bool fIsOpened;
bool fIsSaved;

@@ -2332,6 +2343,11 @@ void carla_nsm_announce(const char* url, const char* appName, int pid)
gCarlaNSM.announce(url, appName, pid);
}

void carla_nsm_ready()
{
gCarlaNSM.ready();
}

void carla_nsm_reply_open()
{
gCarlaNSM.replyOpen();


+ 4
- 1
source/carla.py View File

@@ -891,7 +891,10 @@ class CarlaMainW(QMainWindow):

self.setProperWindowTitle()

QTimer.singleShot(0, self, SLOT("slot_engineStart()"))
if NSM_URL:
Carla.host.nsm_ready()
else:
QTimer.singleShot(0, self, SLOT("slot_engineStart()"))

def startEngine(self):
# ---------------------------------------------


+ 6
- 0
source/carla_backend.py View File

@@ -639,6 +639,9 @@ class Host(object):
self.lib.carla_nsm_announce.argtypes = [c_char_p, c_char_p, c_int]
self.lib.carla_nsm_announce.restype = None

self.lib.carla_nsm_ready.argtypes = None
self.lib.carla_nsm_ready.restype = None

self.lib.carla_nsm_reply_open.argtypes = None
self.lib.carla_nsm_reply_open.restype = None

@@ -898,6 +901,9 @@ class Host(object):
def nsm_announce(self, url, appName_, pid):
self.lib.carla_nsm_announce(url.encode("utf-8"), appName_.encode("utf-8"), pid)

def nsm_ready(self):
self.lib.carla_nsm_ready()

def nsm_reply_open(self):
self.lib.carla_nsm_reply_open()



Loading…
Cancel
Save