Browse Source

Fixes needed for upcoming carla-control

tags/1.9.7
falkTX 11 years ago
parent
commit
b02fc22d70
11 changed files with 99 additions and 58 deletions
  1. +10
    -2
      source/backend/engine/CarlaEngine.cpp
  2. +28
    -28
      source/backend/engine/CarlaEngineOscSend.cpp
  3. +1
    -1
      source/backend/plugin/CarlaPluginDSSI.cpp
  4. +1
    -1
      source/backend/plugin/CarlaPluginFluidSynth.cpp
  5. +1
    -1
      source/backend/plugin/CarlaPluginJuce.cpp
  6. +1
    -1
      source/backend/plugin/CarlaPluginLV2.cpp
  7. +1
    -1
      source/backend/plugin/CarlaPluginLinuxSampler.cpp
  8. +1
    -1
      source/backend/plugin/CarlaPluginNative.cpp
  9. +1
    -1
      source/backend/plugin/CarlaPluginVST2.cpp
  10. +16
    -8
      source/carla_backend.py
  11. +38
    -13
      source/carla_host.py

+ 10
- 2
source/backend/engine/CarlaEngine.cpp View File

@@ -683,12 +683,20 @@ bool CarlaEngine::removeAllPlugins()


pData->thread.stopThread(500); pData->thread.stopThread(500);


const uint curPluginCount(pData->curPluginCount);

#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE
if (pData->options.processMode == ENGINE_PROCESS_MODE_PATCHBAY) if (pData->options.processMode == ENGINE_PROCESS_MODE_PATCHBAY)
pData->graph.removeAllPlugins(); pData->graph.removeAllPlugins();
#endif


const uint32_t curPluginCount(pData->curPluginCount);
# ifdef HAVE_LIBLO
if (isOscControlRegistered())
{
for (int i=curPluginCount; --i >= 0;)
oscSend_control_remove_plugin(i);
}
# endif
#endif


const bool lockWait(isRunning()); const bool lockWait(isRunning());
const ScopedActionLock sal(this, kEnginePostActionZeroCount, 0, 0, lockWait); const ScopedActionLock sal(this, kEnginePostActionZeroCount, 0, 0, lockWait);


+ 28
- 28
source/backend/engine/CarlaEngineOscSend.cpp View File

@@ -33,7 +33,7 @@ void CarlaEngine::oscSend_control_add_plugin_start(const uint pluginId, const ch
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginName != nullptr && pluginName[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pluginName != nullptr && pluginName[0] != '\0',);
carla_debug("CarlaEngine::oscSend_control_add_plugin_start(%i, \"%s\")", pluginId, pluginName); carla_debug("CarlaEngine::oscSend_control_add_plugin_start(%i, \"%s\")", pluginId, pluginName);


@@ -48,7 +48,7 @@ void CarlaEngine::oscSend_control_add_plugin_end(const uint pluginId) const noex
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_add_plugin_end(%i)", pluginId); carla_debug("CarlaEngine::oscSend_control_add_plugin_end(%i)", pluginId);


char targetPath[std::strlen(pData->oscData->path)+16]; char targetPath[std::strlen(pData->oscData->path)+16];
@@ -62,7 +62,7 @@ void CarlaEngine::oscSend_control_remove_plugin(const uint pluginId) const noexc
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_remove_plugin(%i)", pluginId); carla_debug("CarlaEngine::oscSend_control_remove_plugin(%i)", pluginId);


char targetPath[std::strlen(pData->oscData->path)+15]; char targetPath[std::strlen(pData->oscData->path)+15];
@@ -76,7 +76,7 @@ void CarlaEngine::oscSend_control_set_plugin_info1(const uint pluginId, const Pl
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(type != PLUGIN_NONE,); CARLA_SAFE_ASSERT_RETURN(type != PLUGIN_NONE,);
carla_debug("CarlaEngine::oscSend_control_set_plugin_data(%i, %i:%s, %i:%s, %X, " P_INT64 ")", pluginId, type, PluginType2Str(type), category, PluginCategory2Str(category), hints, uniqueId); carla_debug("CarlaEngine::oscSend_control_set_plugin_data(%i, %i:%s, %i:%s, %X, " P_INT64 ")", pluginId, type, PluginType2Str(type), category, PluginCategory2Str(category), hints, uniqueId);


@@ -91,7 +91,7 @@ void CarlaEngine::oscSend_control_set_plugin_info2(const uint pluginId, const ch
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(realName != nullptr && realName[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(realName != nullptr && realName[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(label != nullptr && label[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(label != nullptr && label[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(maker != nullptr,); CARLA_SAFE_ASSERT_RETURN(maker != nullptr,);
@@ -109,7 +109,7 @@ void CarlaEngine::oscSend_control_set_audio_count(const uint pluginId, const uin
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_audio_count(%i, %i, %i)", pluginId, ins, outs); carla_debug("CarlaEngine::oscSend_control_set_audio_count(%i, %i, %i)", pluginId, ins, outs);


char targetPath[std::strlen(pData->oscData->path)+18]; char targetPath[std::strlen(pData->oscData->path)+18];
@@ -123,7 +123,7 @@ void CarlaEngine::oscSend_control_set_midi_count(const uint pluginId, const uint
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_midi_count(%i, %i, %i)", pluginId, ins, outs); carla_debug("CarlaEngine::oscSend_control_set_midi_count(%i, %i, %i)", pluginId, ins, outs);


char targetPath[std::strlen(pData->oscData->path)+18]; char targetPath[std::strlen(pData->oscData->path)+18];
@@ -137,7 +137,7 @@ void CarlaEngine::oscSend_control_set_parameter_count(const uint pluginId, const
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_count(%i, %i, %i)", pluginId, ins, outs); carla_debug("CarlaEngine::oscSend_control_set_parameter_count(%i, %i, %i)", pluginId, ins, outs);


char targetPath[std::strlen(pData->oscData->path)+18]; char targetPath[std::strlen(pData->oscData->path)+18];
@@ -151,7 +151,7 @@ void CarlaEngine::oscSend_control_set_program_count(const uint pluginId, const u
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_program_count(%i, %i)", pluginId, count); carla_debug("CarlaEngine::oscSend_control_set_program_count(%i, %i)", pluginId, count);


char targetPath[std::strlen(pData->oscData->path)+19]; char targetPath[std::strlen(pData->oscData->path)+19];
@@ -165,7 +165,7 @@ void CarlaEngine::oscSend_control_set_midi_program_count(const uint pluginId, co
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_midi_program_count(%i, %i)", pluginId, count); carla_debug("CarlaEngine::oscSend_control_set_midi_program_count(%i, %i)", pluginId, count);


char targetPath[std::strlen(pData->oscData->path)+24]; char targetPath[std::strlen(pData->oscData->path)+24];
@@ -179,7 +179,7 @@ void CarlaEngine::oscSend_control_set_parameter_data(const uint pluginId, const
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(name != nullptr && name[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(name != nullptr && name[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(unit != nullptr,); CARLA_SAFE_ASSERT_RETURN(unit != nullptr,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_data(%i, %i, %i:%s, %X, \"%s\", \"%s\")", pluginId, index, type, ParameterType2Str(type), hints, name, unit); carla_debug("CarlaEngine::oscSend_control_set_parameter_data(%i, %i, %i:%s, %X, \"%s\", \"%s\")", pluginId, index, type, ParameterType2Str(type), hints, name, unit);
@@ -195,12 +195,12 @@ void CarlaEngine::oscSend_control_set_parameter_ranges1(const uint pluginId, con
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(def <= min && def >= max,);
CARLA_SAFE_ASSERT_RETURN(min < max,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT(def >= min && def <= max);
CARLA_SAFE_ASSERT(min < max);
carla_debug("CarlaEngine::oscSend_control_set_parameter_ranges1(%i, %i, %f, %f, %f)", pluginId, index, def, min, max, def); carla_debug("CarlaEngine::oscSend_control_set_parameter_ranges1(%i, %i, %f, %f, %f)", pluginId, index, def, min, max, def);


char targetPath[std::strlen(pData->oscData->path)+23];
char targetPath[std::strlen(pData->oscData->path)+24];
std::strcpy(targetPath, pData->oscData->path); std::strcpy(targetPath, pData->oscData->path);
std::strcat(targetPath, "/set_parameter_ranges1"); std::strcat(targetPath, "/set_parameter_ranges1");
try_lo_send(pData->oscData->target, targetPath, "iifff", static_cast<int32_t>(pluginId), static_cast<int32_t>(index), def, min, max); try_lo_send(pData->oscData->target, targetPath, "iifff", static_cast<int32_t>(pluginId), static_cast<int32_t>(index), def, min, max);
@@ -211,14 +211,14 @@ void CarlaEngine::oscSend_control_set_parameter_ranges2(const uint pluginId, con
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(step <= stepSmall && step >= stepLarge,);
CARLA_SAFE_ASSERT_RETURN(stepSmall <= stepLarge,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT(step >= stepSmall && step <= stepLarge);
CARLA_SAFE_ASSERT(stepSmall <= stepLarge);
carla_debug("CarlaEngine::oscSend_control_set_parameter_ranges2(%i, %i, %f, %f, %f)", pluginId, index, step, stepSmall, stepLarge); carla_debug("CarlaEngine::oscSend_control_set_parameter_ranges2(%i, %i, %f, %f, %f)", pluginId, index, step, stepSmall, stepLarge);


char targetPath[std::strlen(pData->oscData->path)+23];
char targetPath[std::strlen(pData->oscData->path)+24];
std::strcpy(targetPath, pData->oscData->path); std::strcpy(targetPath, pData->oscData->path);
std::strcat(targetPath, "/set_parameter_ranges");
std::strcat(targetPath, "/set_parameter_ranges2");
try_lo_send(pData->oscData->target, targetPath, "iifff", static_cast<int32_t>(pluginId), static_cast<int32_t>(index), step, stepSmall, stepLarge); try_lo_send(pData->oscData->target, targetPath, "iifff", static_cast<int32_t>(pluginId), static_cast<int32_t>(index), step, stepSmall, stepLarge);
} }


@@ -227,7 +227,7 @@ void CarlaEngine::oscSend_control_set_parameter_midi_cc(const uint pluginId, con
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(cc >= -1 && cc < MAX_MIDI_CONTROL,); CARLA_SAFE_ASSERT_RETURN(cc >= -1 && cc < MAX_MIDI_CONTROL,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_midi_cc(%i, %i, %i)", pluginId, index, cc); carla_debug("CarlaEngine::oscSend_control_set_parameter_midi_cc(%i, %i, %i)", pluginId, index, cc);


@@ -242,7 +242,7 @@ void CarlaEngine::oscSend_control_set_parameter_midi_channel(const uint pluginId
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(channel < MAX_MIDI_CHANNELS,); CARLA_SAFE_ASSERT_RETURN(channel < MAX_MIDI_CHANNELS,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_midi_channel(%i, %i, %i)", pluginId, index, channel); carla_debug("CarlaEngine::oscSend_control_set_parameter_midi_channel(%i, %i, %i)", pluginId, index, channel);


@@ -257,7 +257,7 @@ void CarlaEngine::oscSend_control_set_parameter_value(const uint pluginId, const
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(index != PARAMETER_NULL,); CARLA_SAFE_ASSERT_RETURN(index != PARAMETER_NULL,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_value(%i, %i:%s, %f)", pluginId, index, (index < 0) ? InternalParameterIndex2Str(static_cast<InternalParameterIndex>(index)) : "(none)", value); carla_debug("CarlaEngine::oscSend_control_set_parameter_value(%i, %i:%s, %f)", pluginId, index, (index < 0) ? InternalParameterIndex2Str(static_cast<InternalParameterIndex>(index)) : "(none)", value);


@@ -272,7 +272,7 @@ void CarlaEngine::oscSend_control_set_default_value(const uint pluginId, const u
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_default_value(%i, %i, %f)", pluginId, index, value); carla_debug("CarlaEngine::oscSend_control_set_default_value(%i, %i, %f)", pluginId, index, value);


char targetPath[std::strlen(pData->oscData->path)+19]; char targetPath[std::strlen(pData->oscData->path)+19];
@@ -286,7 +286,7 @@ void CarlaEngine::oscSend_control_set_current_program(const uint pluginId, const
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_current_program(%i, %i)", pluginId, index); carla_debug("CarlaEngine::oscSend_control_set_current_program(%i, %i)", pluginId, index);


char targetPath[std::strlen(pData->oscData->path)+21]; char targetPath[std::strlen(pData->oscData->path)+21];
@@ -300,7 +300,7 @@ void CarlaEngine::oscSend_control_set_current_midi_program(const uint pluginId,
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_current_midi_program(%i, %i)", pluginId, index); carla_debug("CarlaEngine::oscSend_control_set_current_midi_program(%i, %i)", pluginId, index);


char targetPath[std::strlen(pData->oscData->path)+26]; char targetPath[std::strlen(pData->oscData->path)+26];
@@ -314,7 +314,7 @@ void CarlaEngine::oscSend_control_set_program_name(const uint pluginId, const ui
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(name != nullptr,); CARLA_SAFE_ASSERT_RETURN(name != nullptr,);
carla_debug("CarlaEngine::oscSend_control_set_program_name(%i, %i, \"%s\")", pluginId, index, name); carla_debug("CarlaEngine::oscSend_control_set_program_name(%i, %i, \"%s\")", pluginId, index, name);


@@ -329,7 +329,7 @@ void CarlaEngine::oscSend_control_set_midi_program_data(const uint pluginId, con
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(name != nullptr,); CARLA_SAFE_ASSERT_RETURN(name != nullptr,);
carla_debug("CarlaEngine::oscSend_control_set_midi_program_data(%i, %i, %i, %i, \"%s\")", pluginId, index, bank, program, name); carla_debug("CarlaEngine::oscSend_control_set_midi_program_data(%i, %i, %i, %i, \"%s\")", pluginId, index, bank, program, name);




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

@@ -1246,7 +1246,7 @@ public:


#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) #if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{ {
pData->engine->oscSend_control_set_midi_program_count(pData->id, newCount); pData->engine->oscSend_control_set_midi_program_count(pData->id, newCount);




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

@@ -951,7 +951,7 @@ public:


#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) #if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{ {
pData->engine->oscSend_control_set_midi_program_count(pData->id, count); pData->engine->oscSend_control_set_midi_program_count(pData->id, count);




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

@@ -590,7 +590,7 @@ public:


#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) #if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{ {
pData->engine->oscSend_control_set_program_count(pData->id, newCount); pData->engine->oscSend_control_set_program_count(pData->id, newCount);




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

@@ -2506,7 +2506,7 @@ public:


#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) #if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{ {
pData->engine->oscSend_control_set_midi_program_count(pData->id, newCount); pData->engine->oscSend_control_set_midi_program_count(pData->id, newCount);




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

@@ -720,7 +720,7 @@ public:


#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) #if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{ {
pData->engine->oscSend_control_set_program_count(pData->id, count); pData->engine->oscSend_control_set_program_count(pData->id, count);




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

@@ -1221,7 +1221,7 @@ public:


#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) #if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{ {
pData->engine->oscSend_control_set_midi_program_count(pData->id, count); pData->engine->oscSend_control_set_midi_program_count(pData->id, count);




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

@@ -897,7 +897,7 @@ public:


#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) #if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{ {
pData->engine->oscSend_control_set_program_count(pData->id, newCount); pData->engine->oscSend_control_set_program_count(pData->id, newCount);




+ 16
- 8
source/carla_backend.py View File

@@ -20,6 +20,7 @@
# Imports (Global) # Imports (Global)


from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
from copy import deepcopy
from ctypes import * from ctypes import *
from platform import architecture from platform import architecture
from sys import platform, maxsize from sys import platform, maxsize
@@ -2986,13 +2987,13 @@ class CarlaHostPlugin(CarlaHostMeta):
return return


info = PluginStoreInfo() info = PluginStoreInfo()
info.pluginInfo = PyCarlaPluginInfo
info.pluginInfo = deepcopy(PyCarlaPluginInfo)
info.pluginRealName = "" info.pluginRealName = ""
info.internalValues = [0.0, 1.0, 1.0, -1.0, 1.0, 0.0, -1.0] info.internalValues = [0.0, 1.0, 1.0, -1.0, 1.0, 0.0, -1.0]
info.audioCountInfo = PyCarlaPortCountInfo
info.midiCountInfo = PyCarlaPortCountInfo
info.audioCountInfo = deepcopy(PyCarlaPortCountInfo)
info.midiCountInfo = deepcopy(PyCarlaPortCountInfo)
info.parameterCount = 0 info.parameterCount = 0
info.parameterCountInfo = PyCarlaPortCountInfo
info.parameterCountInfo = deepcopy(PyCarlaPortCountInfo)
info.parameterInfo = [] info.parameterInfo = []
info.parameterData = [] info.parameterData = []
info.parameterRanges = [] info.parameterRanges = []
@@ -3011,6 +3012,9 @@ class CarlaHostPlugin(CarlaHostMeta):
def _set_pluginInfo(self, pluginId, info): def _set_pluginInfo(self, pluginId, info):
self.fPluginsInfo[pluginId].pluginInfo = info self.fPluginsInfo[pluginId].pluginInfo = info


def _set_pluginInfoUpdate(self, pluginId, info):
self.fPluginsInfo[pluginId].pluginInfo.update(info)

def _set_pluginName(self, pluginId, name): def _set_pluginName(self, pluginId, name):
self.fPluginsInfo[pluginId].pluginInfo['name'] = name self.fPluginsInfo[pluginId].pluginInfo['name'] = name


@@ -3039,9 +3043,9 @@ class CarlaHostPlugin(CarlaHostMeta):


# add placeholders # add placeholders
for x in range(count): for x in range(count):
self.fPluginsInfo[pluginId].parameterInfo.append(PyCarlaParameterInfo)
self.fPluginsInfo[pluginId].parameterData.append(PyParameterData)
self.fPluginsInfo[pluginId].parameterRanges.append(PyParameterRanges)
self.fPluginsInfo[pluginId].parameterInfo.append(deepcopy(PyCarlaParameterInfo))
self.fPluginsInfo[pluginId].parameterData.append(deepcopy(PyParameterData))
self.fPluginsInfo[pluginId].parameterRanges.append(deepcopy(PyParameterRanges))
self.fPluginsInfo[pluginId].parameterValues.append(0.0) self.fPluginsInfo[pluginId].parameterValues.append(0.0)


def _set_programCount(self, pluginId, count): def _set_programCount(self, pluginId, count):
@@ -3062,7 +3066,7 @@ class CarlaHostPlugin(CarlaHostMeta):


# add placeholders # add placeholders
for x in range(count): for x in range(count):
self.fPluginsInfo[pluginId].midiProgramData.append(PyMidiProgramData)
self.fPluginsInfo[pluginId].midiProgramData.append(deepcopy(PyMidiProgramData))


def _set_customDataCount(self, pluginId, count): def _set_customDataCount(self, pluginId, count):
self.fPluginsInfo[pluginId].customDataCount = count self.fPluginsInfo[pluginId].customDataCount = count
@@ -3086,6 +3090,10 @@ class CarlaHostPlugin(CarlaHostMeta):
if pluginId < len(self.fPluginsInfo) and paramIndex < self.fPluginsInfo[pluginId].parameterCount: if pluginId < len(self.fPluginsInfo) and paramIndex < self.fPluginsInfo[pluginId].parameterCount:
self.fPluginsInfo[pluginId].parameterRanges[paramIndex] = ranges self.fPluginsInfo[pluginId].parameterRanges[paramIndex] = ranges


def _set_parameterRangesUpdate(self, pluginId, paramIndex, ranges):
if pluginId < len(self.fPluginsInfo) and paramIndex < self.fPluginsInfo[pluginId].parameterCount:
self.fPluginsInfo[pluginId].parameterRanges[paramIndex].update(ranges)

def _set_parameterValue(self, pluginId, paramIndex, value): def _set_parameterValue(self, pluginId, paramIndex, value):
if pluginId < len(self.fPluginsInfo) and paramIndex < self.fPluginsInfo[pluginId].parameterCount: if pluginId < len(self.fPluginsInfo) and paramIndex < self.fPluginsInfo[pluginId].parameterCount:
self.fPluginsInfo[pluginId].parameterValues[paramIndex] = value self.fPluginsInfo[pluginId].parameterValues[paramIndex] = value


+ 38
- 13
source/carla_host.py View File

@@ -117,7 +117,10 @@ class HostWindow(QMainWindow):
# to be filled with key-value pairs of current settings # to be filled with key-value pairs of current settings
self.fSavedSettings = {} self.fSavedSettings = {}


if host.isPlugin:
if host.isControl:
self.fClientName = "Carla-Control"
self.fSessionManagerName = "Control"
elif host.isPlugin:
self.fClientName = "Carla-Plugin" self.fClientName = "Carla-Plugin"
self.fSessionManagerName = "Plugin" self.fSessionManagerName = "Plugin"
elif LADISH_APP_NAME: elif LADISH_APP_NAME:
@@ -150,9 +153,8 @@ class HostWindow(QMainWindow):
# ---------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------
# Set up GUI (engine stopped) # Set up GUI (engine stopped)


if self.host.isPlugin:
if self.host.isPlugin or self.host.isControl:
self.ui.act_file_save.setVisible(False) self.ui.act_file_save.setVisible(False)
self.ui.act_file_save_as.setText(self.tr("Export as..."))
self.ui.act_engine_start.setEnabled(False) self.ui.act_engine_start.setEnabled(False)
self.ui.act_engine_start.setVisible(False) self.ui.act_engine_start.setVisible(False)
self.ui.act_engine_stop.setEnabled(False) self.ui.act_engine_stop.setEnabled(False)
@@ -162,6 +164,21 @@ class HostWindow(QMainWindow):
self.ui.menu_Engine.setEnabled(False) self.ui.menu_Engine.setEnabled(False)
self.ui.menu_Engine.setVisible(False) self.ui.menu_Engine.setVisible(False)
self.ui.menu_Engine.menuAction().setVisible(False) self.ui.menu_Engine.menuAction().setVisible(False)

if self.host.isControl:
self.ui.act_file_new.setVisible(False)
self.ui.act_file_open.setVisible(False)
self.ui.act_file_save.setVisible(False)
self.ui.act_file_save_as.setVisible(False)
self.ui.act_plugin_add.setVisible(False)
self.ui.act_plugin_add2.setVisible(False)
self.ui.act_plugin_remove_all.setVisible(False)
self.ui.menu_Plugin.setEnabled(False)
self.ui.menu_Plugin.setVisible(False)
self.ui.menu_Plugin.menuAction().setVisible(False)
else:
self.ui.act_file_save_as.setText(self.tr("Export as..."))

else: else:
self.ui.act_engine_start.setEnabled(True) self.ui.act_engine_start.setEnabled(True)


@@ -424,7 +441,7 @@ class HostWindow(QMainWindow):
self.startTimers() self.startTimers()


# Start in patchbay tab if using forced patchbay mode # Start in patchbay tab if using forced patchbay mode
if host.processModeForced and host.processMode == ENGINE_PROCESS_MODE_PATCHBAY:
if host.processModeForced and host.processMode == ENGINE_PROCESS_MODE_PATCHBAY and not host.isControl:
self.ui.tabWidget.setCurrentIndex(1) self.ui.tabWidget.setCurrentIndex(1)


# For NSM we wait for the open message # For NSM we wait for the open message
@@ -612,7 +629,7 @@ class HostWindow(QMainWindow):
self.ui.act_canvas_show_internal.blockSignals(True) self.ui.act_canvas_show_internal.blockSignals(True)
self.ui.act_canvas_show_external.blockSignals(True) self.ui.act_canvas_show_external.blockSignals(True)


if processMode == ENGINE_PROCESS_MODE_PATCHBAY and not self.host.isPlugin:
if processMode == ENGINE_PROCESS_MODE_PATCHBAY and not (self.host.isControl or self.host.isPlugin):
self.ui.act_canvas_show_internal.setChecked(True) self.ui.act_canvas_show_internal.setChecked(True)
self.ui.act_canvas_show_internal.setVisible(True) self.ui.act_canvas_show_internal.setVisible(True)
self.ui.act_canvas_show_external.setChecked(False) self.ui.act_canvas_show_external.setChecked(False)
@@ -626,7 +643,7 @@ class HostWindow(QMainWindow):
self.ui.act_canvas_show_internal.blockSignals(False) self.ui.act_canvas_show_internal.blockSignals(False)
self.ui.act_canvas_show_external.blockSignals(False) self.ui.act_canvas_show_external.blockSignals(False)


if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
canSave = (self.fProjectFilename and os.path.exists(self.fProjectFilename)) or not self.fSessionManagerName canSave = (self.fProjectFilename and os.path.exists(self.fProjectFilename)) or not self.fSessionManagerName
self.ui.act_file_save.setEnabled(canSave) self.ui.act_file_save.setEnabled(canSave)
self.ui.act_engine_start.setEnabled(False) self.ui.act_engine_start.setEnabled(False)
@@ -650,7 +667,7 @@ class HostWindow(QMainWindow):
self.ui.menu_PluginMacros.setEnabled(False) self.ui.menu_PluginMacros.setEnabled(False)
self.ui.menu_Canvas.setEnabled(False) self.ui.menu_Canvas.setEnabled(False)


if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
self.ui.act_file_save.setEnabled(False) self.ui.act_file_save.setEnabled(False)
self.ui.act_engine_start.setEnabled(True) self.ui.act_engine_start.setEnabled(True)
self.ui.act_engine_stop.setEnabled(False) self.ui.act_engine_stop.setEnabled(False)
@@ -960,7 +977,7 @@ class HostWindow(QMainWindow):
def slot_canvasRefresh(self): def slot_canvasRefresh(self):
patchcanvas.clear() patchcanvas.clear()


if self.host.processMode == ENGINE_PROCESS_MODE_CONTINUOUS_RACK and self.host.isPlugin:
if self.host.processMode == ENGINE_PROCESS_MODE_CONTINUOUS_RACK and (self.host.isControl or self.host.isPlugin):
return return


if self.host.is_engine_running(): if self.host.is_engine_running():
@@ -1161,6 +1178,14 @@ class HostWindow(QMainWindow):
# Settings # Settings


def setEngineSettings(self): def setEngineSettings(self):
# ----------------------------------------------------------------------------------------------------
# do nothing if control

if self.host.isControl:
return "Control"

# ----------------------------------------------------------------------------------------------------

settings = QSettings("falkTX", "Carla2") settings = QSettings("falkTX", "Carla2")


# ---------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------
@@ -1250,7 +1275,7 @@ class HostWindow(QMainWindow):


#settings.setValue("SplitterState", self.ui.splitter.saveState()) #settings.setValue("SplitterState", self.ui.splitter.saveState())


if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
settings.setValue("ShowTimePanel", self.ui.panelTime.isVisible()) settings.setValue("ShowTimePanel", self.ui.panelTime.isVisible())


settings.setValue("ShowToolbar", self.ui.toolBar.isEnabled()) settings.setValue("ShowToolbar", self.ui.toolBar.isEnabled())
@@ -1273,7 +1298,7 @@ class HostWindow(QMainWindow):
if firstTime: if firstTime:
self.restoreGeometry(settings.value("Geometry", "")) self.restoreGeometry(settings.value("Geometry", ""))


if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
self.ui.panelTime.restoreGeometry(settings.value("TimePanelGeometry", "")) self.ui.panelTime.restoreGeometry(settings.value("TimePanelGeometry", ""))


showTimePanel = settings.value("ShowTimePanel", True, type=bool) showTimePanel = settings.value("ShowTimePanel", True, type=bool)
@@ -1790,13 +1815,13 @@ class HostWindow(QMainWindow):
QMainWindow.showEvent(self, event) QMainWindow.showEvent(self, event)


# set our gui as parent for all plugins UIs # set our gui as parent for all plugins UIs
if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
winIdStr = "%x" % self.winId() winIdStr = "%x" % self.winId()
self.host.set_engine_option(ENGINE_OPTION_FRONTEND_WIN_ID, 0, winIdStr) self.host.set_engine_option(ENGINE_OPTION_FRONTEND_WIN_ID, 0, winIdStr)


def hideEvent(self, event): def hideEvent(self, event):
# disable parent # disable parent
if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
self.host.set_engine_option(ENGINE_OPTION_FRONTEND_WIN_ID, 0, "0") self.host.set_engine_option(ENGINE_OPTION_FRONTEND_WIN_ID, 0, "0")


QMainWindow.hideEvent(self, event) QMainWindow.hideEvent(self, event)
@@ -1892,7 +1917,7 @@ class HostWindow(QMainWindow):
self.killTimers() self.killTimers()
self.saveSettings() self.saveSettings()


if self.host.is_engine_running() and not self.host.isPlugin:
if self.host.is_engine_running() and not (self.host.isControl or self.host.isPlugin):
self.slot_engineStop(True) self.slot_engineStop(True)


QMainWindow.closeEvent(self, event) QMainWindow.closeEvent(self, event)


Loading…
Cancel
Save