Browse Source

Minor tweaks; Work-around issues in rncbc lv2 UIs

tags/1.9.6
falkTX 10 years ago
parent
commit
bd34e47e1a
4 changed files with 30 additions and 10 deletions
  1. +5
    -3
      source/backend/engine/CarlaEngineBridge.cpp
  2. +1
    -1
      source/backend/plugin/CarlaPluginBridge.cpp
  3. +22
    -4
      source/backend/plugin/CarlaPluginLV2.cpp
  4. +2
    -2
      source/bridges-plugin/CarlaBridgePlugin.cpp

+ 5
- 3
source/backend/engine/CarlaEngineBridge.cpp View File

@@ -345,7 +345,7 @@ struct BridgeNonRtServerControl : public CarlaRingBufferControl<HugeStackBuffer>
{ {
if (getAvailableDataSize() >= HugeStackBuffer::size*3/4) if (getAvailableDataSize() >= HugeStackBuffer::size*3/4)
{ {
carla_stdout("Client waitIfDataIsReachingLimit() reached and waited successfully");
//carla_stdout("Client waitIfDataIsReachingLimit() reached and waited successfully");
writeOpcode(kPluginBridgeNonRtServerPong); writeOpcode(kPluginBridgeNonRtServerPong);
commitWrite(); commitWrite();
return; return;
@@ -768,8 +768,10 @@ public:
fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterValue2); fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterValue2);
fShmNonRtServerControl.writeUInt(i); fShmNonRtServerControl.writeUInt(i);
fShmNonRtServerControl.writeFloat(plugin->getParameterValue(i)); fShmNonRtServerControl.writeFloat(plugin->getParameterValue(i));
fShmNonRtServerControl.commitWrite();
fShmNonRtServerControl.waitIfDataIsReachingLimit();

// parameter outputs are not that important, we can skip some
if (! fShmNonRtServerControl.commitWrite())
break;
} }
} }




+ 1
- 1
source/backend/plugin/CarlaPluginBridge.cpp View File

@@ -362,7 +362,7 @@ struct BridgeNonRtClientControl : public CarlaRingBufferControl<BigStackBuffer>
{ {
if (getAvailableDataSize() >= BigStackBuffer::size*3/4) if (getAvailableDataSize() >= BigStackBuffer::size*3/4)
{ {
carla_stdout("Server waitIfDataIsReachingLimit() reached and waited successfully");
//carla_stdout("Server waitIfDataIsReachingLimit() reached and waited successfully");
writeOpcode(kPluginBridgeNonRtClientPing); writeOpcode(kPluginBridgeNonRtClientPing);
commitWrite(); commitWrite();
return; return;


+ 22
- 4
source/backend/plugin/CarlaPluginLV2.cpp View File

@@ -1496,7 +1496,7 @@ public:
fUI.window->idle(); fUI.window->idle();


// note: UI might have been closed by ext-ui or window idle // note: UI might have been closed by ext-ui or window idle
if (fUI.handle != nullptr && fExt.uiidle != nullptr && fExt.uiidle->idle(fUI.handle) != 0)
if (fUI.type != UI::TYPE_EXTERNAL && fUI.handle != nullptr && fExt.uiidle != nullptr && fExt.uiidle->idle(fUI.handle) != 0)
{ {
showCustomUI(false); showCustomUI(false);
pData->engine->callback(ENGINE_CALLBACK_UI_STATE_CHANGED, pData->id, 0, 0, 0.0f, nullptr); pData->engine->callback(ENGINE_CALLBACK_UI_STATE_CHANGED, pData->id, 0, 0, 0.0f, nullptr);
@@ -5066,6 +5066,12 @@ public:
} }
} }


if (fRdfDescriptor->Author != nullptr && std::strcmp(fRdfDescriptor->Author, "rncbc aka. Rui Nuno Capela") == 0)
{
eExt = -1;
iExt = -1;
}

if (eQt4 >= 0) if (eQt4 >= 0)
iFinal = eQt4; iFinal = eQt4;
else if (eQt5 >= 0) else if (eQt5 >= 0)
@@ -5114,6 +5120,15 @@ public:
{ {
LV2_RDF_UI* const ui(&fRdfDescriptor->UIs[i]); LV2_RDF_UI* const ui(&fRdfDescriptor->UIs[i]);


if (std::strcmp(ui->URI, "http://drumkv1.sourceforge.net/lv2#ui") == 0 ||
std::strcmp(ui->URI, "http://samplv1.sourceforge.net/lv2#ui") == 0 ||
std::strcmp(ui->URI, "http://synthv1.sourceforge.net/lv2#ui") == 0 )
{
iFinal = static_cast<int>(i);
hasShowInterface = true;
break;
}

for (uint32_t j=0; j < ui->ExtensionCount; ++j) for (uint32_t j=0; j < ui->ExtensionCount; ++j)
{ {
CARLA_SAFE_ASSERT_CONTINUE(ui->Extensions[j] != nullptr); CARLA_SAFE_ASSERT_CONTINUE(ui->Extensions[j] != nullptr);
@@ -5144,9 +5159,12 @@ public:


for (uint32_t i=0; i < fUI.rdfDescriptor->FeatureCount; ++i) for (uint32_t i=0; i < fUI.rdfDescriptor->FeatureCount; ++i)
{ {
if (! is_lv2_ui_feature_supported(fUI.rdfDescriptor->Features[i].URI))
const char* const uri(fUI.rdfDescriptor->Features[i].URI);
CARLA_SAFE_ASSERT_CONTINUE(uri != nullptr && uri[0] != '\0');

if (! is_lv2_ui_feature_supported(uri))
{ {
carla_stderr("Plugin UI requires a feature that is not supported:\n%s", fUI.rdfDescriptor->Features[i].URI);
carla_stderr("Plugin UI requires a feature that is not supported:\n%s", uri);


if (LV2_IS_FEATURE_REQUIRED(fUI.rdfDescriptor->Features[i].Type)) if (LV2_IS_FEATURE_REQUIRED(fUI.rdfDescriptor->Features[i].Type))
{ {
@@ -5154,7 +5172,7 @@ public:
break; break;
} }
} }
if (std::strcmp(fUI.rdfDescriptor->Features[i].URI, LV2_UI__makeResident) == 0)
if (std::strcmp(uri, LV2_UI__makeResident) == 0)
canDelete = false; canDelete = false;
} }




+ 2
- 2
source/bridges-plugin/CarlaBridgePlugin.cpp View File

@@ -130,7 +130,7 @@ public:


void initialise(const String&) override void initialise(const String&) override
{ {
startTimer(15);
startTimer(8);
} }


void shutdown() override void shutdown() override
@@ -230,7 +230,7 @@ public:
for (; ! gCloseNow;) for (; ! gCloseNow;)
{ {
gIdle(); gIdle();
carla_msleep(15);
carla_msleep(8);
} }
#endif #endif




Loading…
Cancel
Save