Browse Source

Fix UI init of carla-native.lv2 plugins

tags/1.9.4
falkTX 11 years ago
parent
commit
5e8fb785aa
3 changed files with 45 additions and 47 deletions
  1. +29
    -31
      source/plugin/carla-native-lv2.cpp
  2. +9
    -9
      source/tests/CarlaUtils.cpp
  3. +7
    -7
      source/tests/RtLinkedList.cpp

+ 29
- 31
source/plugin/carla-native-lv2.cpp View File

@@ -580,10 +580,13 @@ public:

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

bool lv2ui_instantiate(LV2UI_Write_Function writeFunction, LV2UI_Controller controller, LV2UI_Widget* widget, const LV2_Feature* const* features)
void lv2ui_instantiate(LV2UI_Write_Function writeFunction, LV2UI_Controller controller, LV2UI_Widget* widget, const LV2_Feature* const* features)
{
const LV2_Options_Option* options = nullptr;
const char* windowTitle = nullptr;
fUI.writeFunction = writeFunction;
fUI.controller = controller;

// ---------------------------------------------------------------
// see if the host supports external-ui

for (int i=0; features[i] != nullptr; ++i)
{
@@ -591,43 +594,42 @@ public:
std::strcmp(features[i]->URI, LV2_EXTERNAL_UI_DEPRECATED_URI) == 0)
{
fUI.host = (const LV2_External_UI_Host*)features[i]->data;
break;
}
else if (std::strcmp(features[i]->URI, LV2_OPTIONS__options) == 0)
options = (const LV2_Options_Option*)features[i]->data;
}

if (options == nullptr)
{
carla_stderr("Host doesn't provides option feature");
return false;
}

if (fUI.host != nullptr)
{
windowTitle = carla_strdup(fUI.host->plugin_human_id);
fHost.uiName = carla_strdup(fUI.host->plugin_human_id);
*widget = this;
return;
}
else

// ---------------------------------------------------------------
// no external-ui support, use showInterface

for (int i=0; features[i] != nullptr; ++i)
{
for (int i=0; options[i].key != 0; ++i)
if (std::strcmp(features[i]->URI, LV2_OPTIONS__options) == 0)
{
if (options[i].key == fUridMap->map(fUridMap->handle, LV2_UI__windowTitle))
const LV2_Options_Option* const options((const LV2_Options_Option*)features[i]->data);

for (int i=0; options[i].key != 0; ++i)
{
windowTitle = carla_strdup((const char*)options[i].value);
break;
if (options[i].key == fUridMap->map(fUridMap->handle, LV2_UI__windowTitle))
{
fHost.uiName = carla_strdup((const char*)options[i].value);
break;
}
}
break;
}
}

if (windowTitle == nullptr)
return false;

fUI.writeFunction = writeFunction;
fUI.controller = controller;
fHost.uiName = windowTitle;
if (fHost.uiName == nullptr)
fHost.uiName = carla_strdup(fDescriptor->name);

*widget = (fUI.host != nullptr) ? this : nullptr;

return true;
*widget = nullptr;
}

void lv2ui_port_event(uint32_t portIndex, uint32_t bufferSize, uint32_t format, const void* buffer) const
@@ -1404,11 +1406,7 @@ static LV2UI_Handle lv2ui_instantiate(const LV2UI_Descriptor*, const char*, cons
return nullptr;
}

if (! plugin->lv2ui_instantiate(writeFunction, controller, widget, features))
{
carla_stderr("Host doesn't support external UI");
return nullptr;
}
plugin->lv2ui_instantiate(writeFunction, controller, widget, features);

return (LV2UI_Handle)plugin;
}


+ 9
- 9
source/tests/CarlaUtils.cpp View File

@@ -27,6 +27,11 @@
#include "CarlaBackendUtils.hpp"
#include "CarlaEngineUtils.hpp"

#include "ladspa_rdf.hpp"
#include "lv2_rdf.hpp"

#include "CarlaLadspaUtils.hpp"

// #include "CarlaBridgeUtils.hpp"
// #include "CarlaDssiUtils.hpp"
// #include "CarlaJuceUtils.hpp"
@@ -34,26 +39,21 @@
// #include "CarlaLibUtils.hpp"
// #include "CarlaLv2Utils.hpp"
// #include "CarlaOscUtils.hpp"
// #include "CarlaPipeUtils.hpp"
// #include "CarlaShmUtils.hpp"
// #include "CarlaStateUtils.hpp"
// #include "CarlaVstUtils.hpp"

// #include "CarlaLibCounter.hpp"
// #include "CarlaLogThread.hpp"
// #include "CarlaMutex.hpp"
// #include "CarlaRingBuffer.hpp"
// #include "CarlaString.hpp"
// #include "CarlaThread.hpp"
// #include "List.hpp"
// #include "Lv2AtomQueue.hpp"
// #include "RtList.hpp"

// #include "JucePluginWindow.hpp"

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

static void test_CarlaUtils()
static void test_CarlaUtils() noexcept
{
// -------------------------------------------------------------------
// misc functions
@@ -309,7 +309,7 @@ static void test_CarlaUtils()

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

static void test_CarlaMathUtils()
static void test_CarlaMathUtils() noexcept
{
// -------------------------------------------------------------------
// math functions (base)
@@ -460,7 +460,7 @@ static void test_CarlaMathUtils()

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

static void test_CarlaBackendUtils()
static void test_CarlaBackendUtils() noexcept
{
CARLA_BACKEND_USE_NAMESPACE
carla_stdout(PluginOption2Str(PLUGIN_OPTION_FIXED_BUFFERS));
@@ -482,7 +482,7 @@ static void test_CarlaBackendUtils()

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

static void test_CarlaEngineUtils()
static void test_CarlaEngineUtils() noexcept
{
CARLA_BACKEND_USE_NAMESPACE
carla_stdout(EngineType2Str(kEngineTypeNull));


+ 7
- 7
source/tests/RtLinkedList.cpp View File

@@ -27,10 +27,10 @@ struct MyData {
CarlaString str;
int id;

MyData()
MyData() noexcept
: id(-1) {}

MyData(int i)
MyData(int i) noexcept
: str(i),
id(i) {}
};
@@ -41,22 +41,22 @@ struct PostRtEvents {
RtLinkedList<MyData> data;
RtLinkedList<MyData> dataPendingRT;

PostRtEvents()
PostRtEvents() noexcept
: dataPool(MIN_RT_EVENTS, MAX_RT_EVENTS),
data(dataPool, true),
dataPendingRT(dataPool, true) {}

~PostRtEvents()
~PostRtEvents() noexcept
{
clear();
}

void appendRT(const MyData& event)
void appendRT(const MyData& event) noexcept
{
dataPendingRT.append(event);
}

void clear()
void clear() noexcept
{
mutex.lock();
data.clear();
@@ -64,7 +64,7 @@ struct PostRtEvents {
mutex.unlock();
}

void trySplice()
void trySplice() noexcept
{
if (mutex.tryLock())
{


Loading…
Cancel
Save