Browse Source

Don't call engine->idle if engine is plugin; Give plugin hosts idle

tags/1.9.7
falkTX 10 years ago
parent
commit
b0035be5c9
6 changed files with 39 additions and 4 deletions
  1. +8
    -0
      source/backend/engine/CarlaEngineNative.cpp
  2. +6
    -1
      source/backend/plugin/CarlaPluginBridge.cpp
  3. +3
    -0
      source/backend/plugin/CarlaPluginNative.cpp
  4. +2
    -1
      source/includes/CarlaNative.h
  5. +1
    -0
      source/plugin/carla-lv2.cpp
  6. +19
    -2
      source/plugin/carla-vst.cpp

+ 8
- 0
source/backend/engine/CarlaEngineNative.cpp View File

@@ -700,6 +700,14 @@ protected:
return "Plugin";
}

void callback(const EngineCallbackOpcode action, const uint pluginId, const int value1, const int value2, const float value3, const char* const valueStr) noexcept override
{
CarlaEngine::callback(action, pluginId, value1, value2, value3, valueStr);

if (action == ENGINE_CALLBACK_IDLE)
pHost->dispatcher(pHost->handle, NATIVE_HOST_OPCODE_HOST_IDLE, 0, 0, nullptr, 0.0f);
}

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

const char* renamePlugin(const uint id, const char* const newName) override


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

@@ -2531,10 +2531,15 @@ public:
#endif
sFirstInit = false;

const bool needsEngineIdle = pData->engine->getType() != kEngineTypePlugin;

for (; Time::currentTimeMillis() < fLastPongTime + timeoutEnd && fBridgeThread.isThreadRunning();)
{
pData->engine->callback(ENGINE_CALLBACK_IDLE, 0, 0, 0, 0.0f, nullptr);
pData->engine->idle();

if (needsEngineIdle)
pData->engine->idle();

idle();

if (fInitiated)


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

@@ -2219,6 +2219,9 @@ protected:
pData->engine->callback(ENGINE_CALLBACK_UI_STATE_CHANGED, pData->id, -1, 0, 0.0f, nullptr);
fIsUiVisible = false;
break;
case NATIVE_HOST_OPCODE_HOST_IDLE:
pData->engine->callback(ENGINE_CALLBACK_IDLE, 0, 0, 0, 0.0f, nullptr);
break;
}

return ret;


+ 2
- 1
source/includes/CarlaNative.h View File

@@ -103,7 +103,8 @@ typedef enum {
NATIVE_HOST_OPCODE_RELOAD_PARAMETERS = 3, /** nothing */
NATIVE_HOST_OPCODE_RELOAD_MIDI_PROGRAMS = 4, /** nothing */
NATIVE_HOST_OPCODE_RELOAD_ALL = 5, /** nothing */
NATIVE_HOST_OPCODE_UI_UNAVAILABLE = 6 /** nothing */
NATIVE_HOST_OPCODE_UI_UNAVAILABLE = 6, /** nothing */
NATIVE_HOST_OPCODE_HOST_IDLE = 7 /** nothing */
} NativeHostDispatcherOpcode;

/* ------------------------------------------------------------------------------------------------------------


+ 1
- 0
source/plugin/carla-lv2.cpp View File

@@ -897,6 +897,7 @@ protected:
case NATIVE_HOST_OPCODE_RELOAD_PARAMETERS:
case NATIVE_HOST_OPCODE_RELOAD_MIDI_PROGRAMS:
case NATIVE_HOST_OPCODE_RELOAD_ALL:
case NATIVE_HOST_OPCODE_HOST_IDLE:
// nothing
break;
case NATIVE_HOST_OPCODE_UI_UNAVAILABLE:


+ 19
- 2
source/plugin/carla-vst.cpp View File

@@ -512,10 +512,27 @@ protected:
intptr_t handleDispatcher(const NativeHostDispatcherOpcode opcode, const int32_t index, const intptr_t value, void* const ptr, const float opt)
{
carla_debug("NativePlugin::handleDispatcher(%i, %i, " P_INTPTR ", %p, %f)", opcode, index, value, ptr, opt);
return 0;

switch (opcode)
{
case NATIVE_HOST_OPCODE_NULL:
case NATIVE_HOST_OPCODE_UPDATE_PARAMETER:
case NATIVE_HOST_OPCODE_UPDATE_MIDI_PROGRAM:
case NATIVE_HOST_OPCODE_RELOAD_PARAMETERS:
case NATIVE_HOST_OPCODE_RELOAD_MIDI_PROGRAMS:
case NATIVE_HOST_OPCODE_RELOAD_ALL:
case NATIVE_HOST_OPCODE_UI_UNAVAILABLE:
break;

case NATIVE_HOST_OPCODE_HOST_IDLE:
fAudioMaster(fEffect, audioMasterIdle, 0, 0, nullptr, 0.0f);
break;
}

// unused for now
(void)opcode; (void)index; (void)value; (void)ptr; (void)opt;
return 0;

(void)index; (void)value; (void)ptr; (void)opt;
}

private:


Loading…
Cancel
Save