Browse Source

Renders inline display for internal plugins, if provided

Signed-off-by: falkTX <falktx@falktx.com>
tags/v2.1-rc1
falkTX 6 years ago
parent
commit
78461399e0
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
5 changed files with 46 additions and 12 deletions
  1. +1
    -1
      source/backend/CarlaHost.h
  2. +14
    -4
      source/backend/CarlaStandalone.cpp
  3. +4
    -4
      source/backend/plugin/CarlaPluginLV2.cpp
  4. +24
    -0
      source/backend/plugin/CarlaPluginNative.cpp
  5. +3
    -3
      source/includes/lv2/inline-display.h

+ 1
- 1
source/backend/CarlaHost.h View File

@@ -794,7 +794,7 @@ CARLA_EXPORT float carla_get_output_peak_value(uint pluginId, bool isLeft);
* Render a plugin's inline display.
* @param pluginId Plugin
*/
CARLA_EXPORT CarlaInlineDisplayImageSurface* carla_render_inline_display(uint pluginId, int width, int height);
CARLA_EXPORT const CarlaInlineDisplayImageSurface* carla_render_inline_display(uint pluginId, uint32_t width, uint32_t height);

/*!
* Enable or disable a plugin.


+ 14
- 4
source/backend/CarlaStandalone.cpp View File

@@ -1665,12 +1665,15 @@ float carla_get_output_peak_value(uint pluginId, bool isLeft)

CARLA_BACKEND_START_NAMESPACE

// defined in CarlaPluginInternal.cpp
const void* carla_render_inline_display_internal(CarlaPlugin* plugin, uint32_t width, uint32_t height);

// defined in CarlaPluginLV2.cpp
void* carla_render_inline_display_lv2(CarlaPlugin* plugin, int width, int height);
const void* carla_render_inline_display_lv2(CarlaPlugin* plugin, uint32_t width, uint32_t height);

CARLA_BACKEND_END_NAMESPACE

CarlaInlineDisplayImageSurface* carla_render_inline_display(uint pluginId, int width, int height)
const CarlaInlineDisplayImageSurface* carla_render_inline_display(uint pluginId, uint32_t width, uint32_t height)
{
CARLA_SAFE_ASSERT_RETURN(gStandalone.engine != nullptr, nullptr);

@@ -1678,9 +1681,16 @@ CarlaInlineDisplayImageSurface* carla_render_inline_display(uint pluginId, int w
CARLA_SAFE_ASSERT_RETURN(plugin != nullptr, nullptr);

carla_debug("carla_render_inline_display(%i, %i, %i)", pluginId, width, height);
CARLA_SAFE_ASSERT_RETURN(plugin->getType() == CB::PLUGIN_LV2, nullptr);

return (CarlaInlineDisplayImageSurface*)CB::carla_render_inline_display_lv2(plugin, width, height);
switch (plugin->getType())
{
case CB::PLUGIN_INTERNAL:
return (const CarlaInlineDisplayImageSurface*)CB::carla_render_inline_display_internal(plugin, width, height);
case CB::PLUGIN_LV2:
return (const CarlaInlineDisplayImageSurface*)CB::carla_render_inline_display_lv2(plugin, width, height);
default:
return nullptr;
}
}

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


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

@@ -5068,13 +5068,13 @@ public:
fInlineDisplayNeedsRedraw = true;
}

LV2_Inline_Display_Image_Surface* renderInlineDisplay(int width, int height)
const LV2_Inline_Display_Image_Surface* renderInlineDisplay(const uint32_t width, const uint32_t height)
{
CARLA_SAFE_ASSERT_RETURN(fExt.inlineDisplay != nullptr && fExt.inlineDisplay->render != nullptr, nullptr);
CARLA_SAFE_ASSERT_RETURN(width > 0, nullptr);
CARLA_SAFE_ASSERT_RETURN(height > 0, nullptr);

return fExt.inlineDisplay->render(fHandle, static_cast<uint32_t>(width), static_cast<uint32_t>(height));
return fExt.inlineDisplay->render(fHandle, width, height);
}

// -------------------------------------------------------------------
@@ -6980,9 +6980,9 @@ CarlaPlugin* CarlaPlugin::newLV2(const Initializer& init)
}

// used in CarlaStandalone.cpp
void* carla_render_inline_display_lv2(CarlaPlugin* plugin, int width, int height);
const void* carla_render_inline_display_lv2(CarlaPlugin* plugin, uint32_t width, uint32_t height);

void* carla_render_inline_display_lv2(CarlaPlugin* plugin, int width, int height)
const void* carla_render_inline_display_lv2(CarlaPlugin* plugin, uint32_t width, uint32_t height)
{
CarlaPluginLV2* const lv2Plugin = (CarlaPluginLV2*)plugin;



+ 24
- 0
source/backend/plugin/CarlaPluginNative.cpp View File

@@ -1295,6 +1295,8 @@ public:
pData->hints |= PLUGIN_NEEDS_UI_MAIN_THREAD;
if (fDescriptor->hints & NATIVE_PLUGIN_USES_MULTI_PROGS)
pData->hints |= PLUGIN_USES_MULTI_PROGS;
if (fDescriptor->hints & NATIVE_PLUGIN_HAS_INLINE_DISPLAY)
pData->hints |= PLUGIN_HAS_INLINE_DISPLAY;

// extra plugin hints
pData->extraHints = 0x0;
@@ -2363,6 +2365,18 @@ public:

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

const NativeInlineDisplayImageSurface* renderInlineDisplay(const uint32_t width, const uint32_t height)
{
CARLA_SAFE_ASSERT_RETURN(fDescriptor->hints & NATIVE_PLUGIN_HAS_INLINE_DISPLAY, nullptr);
CARLA_SAFE_ASSERT_RETURN(fDescriptor->render_inline_display, nullptr);
CARLA_SAFE_ASSERT_RETURN(width > 0, nullptr);
CARLA_SAFE_ASSERT_RETURN(height > 0, nullptr);

return fDescriptor->render_inline_display(fHandle, width, height);
}

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

protected:
const NativeTimeInfo* handleGetTimeInfo() const noexcept
{
@@ -2750,6 +2764,16 @@ CarlaPlugin* CarlaPlugin::newNative(const Initializer& init)
return plugin;
}

// used in CarlaStandalone.cpp
const void* carla_render_inline_display_internal(CarlaPlugin* plugin, uint32_t width, uint32_t height);

const void* carla_render_inline_display_internal(CarlaPlugin* plugin, uint32_t width, uint32_t height)
{
CarlaPluginNative* const nativePlugin = (CarlaPluginNative*)plugin;

return nativePlugin->renderInlineDisplay(width, height);
}

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

CARLA_BACKEND_END_NAMESPACE

+ 3
- 3
source/includes/lv2/inline-display.h View File

@@ -89,9 +89,9 @@ typedef struct {
* @param h the max available height
* @return pointer to a LV2_Inline_Display_Image_Surface or NULL
*/
LV2_Inline_Display_Image_Surface* (*render)(
LV2_Handle instance,
uint32_t w, uint32_t h);
const LV2_Inline_Display_Image_Surface* (*render)(
LV2_Handle instance,
uint32_t w, uint32_t h);
} LV2_Inline_Display_Interface;

#ifdef __cplusplus


Loading…
Cancel
Save