diff --git a/c++/carla-backend/vst.cpp b/c++/carla-backend/vst.cpp index 2b982c1..230f370 100644 --- a/c++/carla-backend/vst.cpp +++ b/c++/carla-backend/vst.cpp @@ -1692,7 +1692,7 @@ public: static intptr_t VSTCALLBACK hostCallback(AEffect* const effect, const int32_t opcode, const int32_t index, const intptr_t value, void* const ptr, const float opt) { #ifdef DEBUG - if (opcode != audioMasterGetTime) + if (opcode != audioMasterGetTime && opcode != audioMasterProcessEvents && opcode != audioMasterGetCurrentProcessLevel && opcode != audioMasterGetOutputLatency) qDebug("VstPlugin::hostCallback(%p, %02i:%s, %i, " P_INTPTR ", %p, %f)", effect, opcode, vstMasterOpcode2str(opcode), index, value, ptr, opt); #endif @@ -2153,6 +2153,15 @@ public: return false; } +#ifdef VESTIGE_HEADER + effect->ptr1 = this; +#else + effect->resvd1 = ToVstPtr(this); +#endif + + effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f); + effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f); + // --------------------------------------------------------------- // get info @@ -2174,16 +2183,18 @@ public: } // --------------------------------------------------------------- - // initialize VST stuff + // register client -#ifdef VESTIGE_HEADER - effect->ptr1 = this; -#else - effect->resvd1 = ToVstPtr(this); -#endif + x_client = x_engine->addClient(this); - effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f); - effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f); + if (! x_client->isOk()) + { + setLastError("Failed to register plugin client"); + return false; + } + + // --------------------------------------------------------------- + // initialize VST stuff #if ! VST_FORCE_DEPRECATED effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, x_engine->getBufferSize(), nullptr, x_engine->getSampleRate()); @@ -2211,17 +2222,6 @@ public: if ((effect->flags & effFlagsCanReplacing) > 0 && effect->processReplacing != effect->process) m_hints |= PLUGIN_CAN_PROCESS_REPLACING; - // --------------------------------------------------------------- - // register client - - x_client = x_engine->addClient(this); - - if (! x_client->isOk()) - { - setLastError("Failed to register plugin client"); - return false; - } - // --------------------------------------------------------------- // gui stuff diff --git a/c++/carla-bridge/carla_bridge_plugin.cpp b/c++/carla-bridge/carla_bridge_plugin.cpp index be856f0..46b6d7b 100644 --- a/c++/carla-bridge/carla_bridge_plugin.cpp +++ b/c++/carla-bridge/carla_bridge_plugin.cpp @@ -220,6 +220,8 @@ public: { qDebug("BridgePluginClient::BridgePluginClient()"); + hasUI = false; + msgTimer = 0; nextWidth = 0; nextHeight = 0; @@ -265,7 +267,8 @@ public: if (showGui) { - show(); + if (hasUI) + show(); } else { @@ -348,6 +351,8 @@ public: if (! (plugin && pluginGui)) return; + hasUI = true; + pluginGui->setResizable(resizable); pluginGui->setTitle(plugin->name()); @@ -662,6 +667,7 @@ protected: // --------------------------------------------------------------------- private: + bool hasUI; int msgTimer; int nextWidth, nextHeight; QString nextChunkFilePath; diff --git a/c++/carla-jackbridge/carla_jackbridge.h b/c++/carla-jackbridge/carla_jackbridge.h index dec0811..29f7a2f 100644 --- a/c++/carla-jackbridge/carla_jackbridge.h +++ b/c++/carla-jackbridge/carla_jackbridge.h @@ -23,6 +23,8 @@ #include #include // needed for JACK1 +#ifdef BUILD_BRIDGE + typedef unsigned char jackbridge_midi_data_t; struct jackbridge_midi_event_t { @@ -38,7 +40,6 @@ CARLA_EXPORT char* jackbridge_get_client_name(jack_client_t* client); CARLA_EXPORT int jackbridge_port_name_size(); CARLA_EXPORT int jackbridge_activate(jack_client_t* client); CARLA_EXPORT int jackbridge_deactivate(jack_client_t* client); -CARLA_EXPORT int jackbridge_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg); CARLA_EXPORT void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg); CARLA_EXPORT int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg); CARLA_EXPORT int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg); @@ -58,4 +59,37 @@ CARLA_EXPORT int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t t CARLA_EXPORT jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos); +#else + +#define jackbridge_midi_data_t jack_midi_data_t +#define jackbridge_midi_event_t jack_midi_event_t + +#define jackbridge_client_open jack_client_open +#define jackbridge_client_close jack_client_close +#define jackbridge_client_name_size jack_client_name_size +#define jackbridge_get_client_name jack_get_client_name +#define jackbridge_port_name_size jack_port_name_size +#define jackbridge_activate jack_activate +#define jackbridge_deactivate jack_deactivate +#define jackbridge_on_shutdown jack_on_shutdown +#define jackbridge_set_process_callback jack_set_process_callback +#define jackbridge_set_freewheel_callback jack_set_freewheel_callback +#define jackbridge_set_buffer_size_callback jack_set_buffer_size_callback +#define jackbridge_set_sample_rate_callback jack_set_sample_rate_callback +#define jackbridge_get_sample_rate jack_get_sample_rate +#define jackbridge_get_buffer_size jack_get_buffer_size +#define jackbridge_port_register jack_port_register +#define jackbridge_port_unregister jack_port_unregister +#define jackbridge_port_get_buffer jack_port_get_buffer + +#define jackbridge_midi_get_event_count jack_midi_get_event_count +#define jackbridge_midi_event_get jack_midi_event_get +#define jackbridge_midi_clear_buffer jack_midi_clear_buffer +#define jackbridge_midi_event_reserve jack_midi_event_reserve +#define jackbridge_midi_event_write jack_midi_event_write + +#define jackbridge_transport_query jack_transport_query + +#endif + #endif // CARLA_JACKBRIDGE_H