Browse Source

LV2 UI Bridge fixes

tags/1.9.4
falkTX 11 years ago
parent
commit
6a5bc2efda
9 changed files with 42 additions and 15 deletions
  1. +7
    -1
      source/backend/CarlaPlugin.hpp
  2. +0
    -1
      source/backend/engine/CarlaEngine.cpp
  3. +9
    -0
      source/backend/plugin/CarlaPlugin.cpp
  4. +3
    -3
      source/backend/plugin/Lv2Plugin.cpp
  5. +5
    -0
      source/bridges/CarlaBridgeClient.cpp
  6. +1
    -0
      source/bridges/CarlaBridgeClient.hpp
  7. +8
    -0
      source/bridges/CarlaBridgeOsc.cpp
  8. +1
    -0
      source/bridges/CarlaBridgeOsc.hpp
  9. +8
    -10
      source/bridges/CarlaBridgeUI-LV2.cpp

+ 7
- 1
source/backend/CarlaPlugin.hpp View File

@@ -719,7 +719,13 @@ public:
* Update the plugin's internal OSC data according to \a source and \a url.\n
* This is used for OSC-GUI bridges.
*/
virtual void updateOscData(const lo_address& source, const char* const url);
void updateOscData(const lo_address& source, const char* const url);

/*!
* Update the plugin's extra OSC data, called from the start of updateOscData().\n
* The default implementation does nothing.
*/
virtual bool updateOscDataExtra();

/*!
* Free the plugin's internal OSC memory data.


+ 0
- 1
source/backend/engine/CarlaEngine.cpp View File

@@ -2175,7 +2175,6 @@ bool CarlaEngine::isOscControlRegistered() const noexcept
}
#endif


void CarlaEngine::idleOsc() const noexcept
{
try {


+ 9
- 0
source/backend/plugin/CarlaPlugin.cpp View File

@@ -1723,6 +1723,10 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url)
}
#endif

// send possible extra data first
if (updateOscDataExtra())
pData->engine->idleOsc();

osc_send_sample_rate(pData->osc.data, static_cast<float>(pData->engine->getSampleRate()));

for (LinkedList<CustomData>::Itenerator it = pData->custom.begin(); it.valid(); it.next())
@@ -1759,6 +1763,11 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url)
carla_stdout("CarlaPlugin::updateOscData() - done");
}

bool CarlaPlugin::updateOscDataExtra() override
{
return false;
}

// void CarlaPlugin::freeOscData()
// {
// pData->osc.data.free();


+ 3
- 3
source/backend/plugin/Lv2Plugin.cpp View File

@@ -3505,14 +3505,14 @@ public:
// -------------------------------------------------------------------
// OSC stuff

void updateOscData(const lo_address& source, const char* const url) override
bool updateOscDataExtra() override
{
CarlaPlugin::updateOscData(source, url);

for (size_t i=CARLA_URI_MAP_ID_COUNT, count=fCustomURIDs.count(); i < count; ++i)
osc_send_lv2_urid_map(pData->osc.data, static_cast<uint32_t>(i), fCustomURIDs.getAt(i));

osc_send_lv2_urid_map(pData->osc.data, CARLA_URI_MAP_ID_NULL, "Complete");

return true;
}

// -------------------------------------------------------------------


+ 5
- 0
source/bridges/CarlaBridgeClient.cpp View File

@@ -138,6 +138,11 @@ bool CarlaBridgeClient::oscIdle() const
#endif
}

void CarlaBridgeClient::oscWait() const
{
fOsc.idleWait();
}

void CarlaBridgeClient::oscClose()
{
carla_debug("CarlaBridgeClient::oscClose()");


+ 1
- 0
source/bridges/CarlaBridgeClient.hpp View File

@@ -75,6 +75,7 @@ public:

void oscInit(const char* const url);
bool oscIdle() const;
void oscWait() const;
void oscClose();

bool isOscControlRegistered() const noexcept;


+ 8
- 0
source/bridges/CarlaBridgeOsc.cpp View File

@@ -96,6 +96,14 @@ void CarlaBridgeOsc::idle() const

for (; lo_server_recv_noblock(fServer, 0) != 0;) {}
}

void CarlaBridgeOsc::idleWait() const
{
CARLA_SAFE_ASSERT_RETURN(fServer != nullptr,);

lo_server_recv(fServer);
}

void CarlaBridgeOsc::close()
{
CARLA_ASSERT(fControlData.source == nullptr); // must never be used


+ 1
- 0
source/bridges/CarlaBridgeOsc.hpp View File

@@ -61,6 +61,7 @@ public:

void init(const char* const url);
void idle() const;
void idleWait() const;
void close();

// -------------------------------------------------------------------


+ 8
- 10
source/bridges/CarlaBridgeUI-LV2.cpp View File

@@ -563,15 +563,12 @@ public:
{
sendOscUpdate();

if (fIsReady)
return;

for (int i=0; i < 2000; ++i)
for (;;)
{
oscWait();

if (fIsReady)
return;
oscIdle();
carla_msleep(10);
}
}

@@ -601,8 +598,8 @@ public:
fCustomURIDs.append(carla_strdup(uri));
}

//if (isOscControlRegistered())
sendOscLv2UridMap(urid, uri);
if (isOscControlRegistered())
sendOscLv2UridMap(urid, uri);

return urid;
}
@@ -668,7 +665,7 @@ public:

const float value(*(const float*)buffer);

//if (isOscControlRegistered())
if (isOscControlRegistered())
sendOscControl(portIndex, value);
}
else if (format == CARLA_URI_MAP_ID_ATOM_TRANSFER_ATOM || CARLA_URI_MAP_ID_ATOM_TRANSFER_EVENT)
@@ -679,7 +676,7 @@ public:
if (bufferSize == 0 || buffer == nullptr)
return;

//if (isOscControlRegistered())
if (isOscControlRegistered())
sendOscLv2AtomTransfer(portIndex, QByteArray((const char*)buffer, bufferSize).toBase64().constData());
}
else
@@ -728,6 +725,7 @@ public:
{
if (i != urid)
continue;
CARLA_SAFE_ASSERT(it.getValue() == nullptr);
it.setValue(carla_strdup(uri));
break;
}


Loading…
Cancel
Save