| 
																	
																	
																		
																	
																	
																 | 
																@@ -163,7 +163,7 @@ struct BridgeNonRtControl : public CarlaRingBuffer<BigStackBuffer> { | 
															
														
														
													
														
															
																 | 
																 | 
																    BridgeNonRtData* data; | 
																 | 
																 | 
																    BridgeNonRtData* data; | 
															
														
														
													
														
															
																 | 
																 | 
																    char shm[32]; | 
																 | 
																 | 
																    char shm[32]; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    BridgeNonRtControl() | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    BridgeNonRtControl() noexcept | 
															
														
														
													
														
															
																 | 
																 | 
																        : CarlaRingBuffer<BigStackBuffer>(), | 
																 | 
																 | 
																        : CarlaRingBuffer<BigStackBuffer>(), | 
															
														
														
													
														
															
																 | 
																 | 
																          data(nullptr) | 
																 | 
																 | 
																          data(nullptr) | 
															
														
														
													
														
															
																 | 
																 | 
																    { | 
																 | 
																 | 
																    { | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -171,7 +171,7 @@ struct BridgeNonRtControl : public CarlaRingBuffer<BigStackBuffer> { | 
															
														
														
													
														
															
																 | 
																 | 
																        jackbridge_shm_init(shm); | 
																 | 
																 | 
																        jackbridge_shm_init(shm); | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    ~BridgeNonRtControl() | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    ~BridgeNonRtControl() noexcept | 
															
														
														
													
														
															
																 | 
																 | 
																    { | 
																 | 
																 | 
																    { | 
															
														
														
													
														
															
																 | 
																 | 
																        // should be cleared by now | 
																 | 
																 | 
																        // should be cleared by now | 
															
														
														
													
														
															
																 | 
																 | 
																        CARLA_SAFE_ASSERT(data == nullptr); | 
																 | 
																 | 
																        CARLA_SAFE_ASSERT(data == nullptr); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -485,8 +485,7 @@ public: | 
															
														
														
													
														
															
																 | 
																 | 
																                if (chunkFilePath.startsWith("/")) | 
																 | 
																 | 
																                if (chunkFilePath.startsWith("/")) | 
															
														
														
													
														
															
																 | 
																 | 
																                { | 
																 | 
																 | 
																                { | 
															
														
														
													
														
															
																 | 
																 | 
																                    // running under Wine, posix host | 
																 | 
																 | 
																                    // running under Wine, posix host | 
															
														
														
													
														
															
																 | 
																 | 
																                    chunkFilePath = chunkFilePath.replaceSection(0, 1, "Z:\\"); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                    chunkFilePath = chunkFilePath.replace("/", "\\"); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    chunkFilePath = chunkFilePath.replaceSection(0, 1, "Z:\\").replace("/", "\\"); | 
															
														
														
													
														
															
																 | 
																 | 
																                } | 
																 | 
																 | 
																                } | 
															
														
														
													
														
															
																 | 
																 | 
																#endif | 
																 | 
																 | 
																#endif | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -543,27 +542,46 @@ public: | 
															
														
														
													
														
															
																 | 
																 | 
																                break; | 
																 | 
																 | 
																                break; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																            case kPluginBridgeNonRtUiParameterChange: { | 
																 | 
																 | 
																            case kPluginBridgeNonRtUiParameterChange: { | 
															
														
														
													
														
															
																 | 
																 | 
																                // TODO | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                const uint32_t index(fShmNonRtControl.readUInt()); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                const float    value(fShmNonRtControl.readFloat()); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if (plugin != nullptr && plugin->isEnabled()) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    plugin->uiParameterChange(index, value); | 
															
														
														
													
														
															
																 | 
																 | 
																                break; | 
																 | 
																 | 
																                break; | 
															
														
														
													
														
															
																 | 
																 | 
																            } | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																            case kPluginBridgeNonRtUiProgramChange: { | 
																 | 
																 | 
																            case kPluginBridgeNonRtUiProgramChange: { | 
															
														
														
													
														
															
																 | 
																 | 
																                // TODO | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                const uint32_t index(fShmNonRtControl.readUInt()); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if (plugin != nullptr && plugin->isEnabled()) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    plugin->uiProgramChange(index); | 
															
														
														
													
														
															
																 | 
																 | 
																                break; | 
																 | 
																 | 
																                break; | 
															
														
														
													
														
															
																 | 
																 | 
																            } | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																            case kPluginBridgeNonRtUiMidiProgramChange: { | 
																 | 
																 | 
																            case kPluginBridgeNonRtUiMidiProgramChange: { | 
															
														
														
													
														
															
																 | 
																 | 
																                // TODO | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                const uint32_t index(fShmNonRtControl.readUInt()); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if (plugin != nullptr && plugin->isEnabled()) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    plugin->uiMidiProgramChange(index); | 
															
														
														
													
														
															
																 | 
																 | 
																                break; | 
																 | 
																 | 
																                break; | 
															
														
														
													
														
															
																 | 
																 | 
																            } | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																            case kPluginBridgeNonRtUiNoteOn: { | 
																 | 
																 | 
																            case kPluginBridgeNonRtUiNoteOn: { | 
															
														
														
													
														
															
																 | 
																 | 
																                // TODO | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                const uint8_t chnl(fShmNonRtControl.readByte()); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                const uint8_t note(fShmNonRtControl.readByte()); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                const uint8_t velo(fShmNonRtControl.readByte()); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if (plugin != nullptr && plugin->isEnabled()) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    plugin->uiNoteOn(chnl, note, velo); | 
															
														
														
													
														
															
																 | 
																 | 
																                break; | 
																 | 
																 | 
																                break; | 
															
														
														
													
														
															
																 | 
																 | 
																            } | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																            case kPluginBridgeNonRtUiNoteOff: { | 
																 | 
																 | 
																            case kPluginBridgeNonRtUiNoteOff: { | 
															
														
														
													
														
															
																 | 
																 | 
																                // TODO | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                const uint8_t chnl(fShmNonRtControl.readByte()); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                const uint8_t note(fShmNonRtControl.readByte()); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if (plugin != nullptr && plugin->isEnabled()) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    plugin->uiNoteOff(chnl, note); | 
															
														
														
													
														
															
																 | 
																 | 
																                break; | 
																 | 
																 | 
																                break; | 
															
														
														
													
														
															
																 | 
																 | 
																            } | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -667,7 +685,7 @@ protected: | 
															
														
														
													
														
															
																 | 
																 | 
																                case kPluginBridgeRtProcess: { | 
																 | 
																 | 
																                case kPluginBridgeRtProcess: { | 
															
														
														
													
														
															
																 | 
																 | 
																                    CARLA_SAFE_ASSERT_BREAK(fShmAudioPool.data != nullptr); | 
																 | 
																 | 
																                    CARLA_SAFE_ASSERT_BREAK(fShmAudioPool.data != nullptr); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																                    if (plugin != nullptr && plugin->isEnabled() && plugin->tryLock(true)) // FIXME - always lock? | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    if (plugin != nullptr && plugin->isEnabled() && plugin->tryLock(false)) | 
															
														
														
													
														
															
																 | 
																 | 
																                    { | 
																 | 
																 | 
																                    { | 
															
														
														
													
														
															
																 | 
																 | 
																                        const BridgeTimeInfo& bridgeTimeInfo(fShmRtControl.data->timeInfo); | 
																 | 
																 | 
																                        const BridgeTimeInfo& bridgeTimeInfo(fShmRtControl.data->timeInfo); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -742,9 +760,9 @@ private: | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																// ----------------------------------------------------------------------- | 
																 | 
																 | 
																// ----------------------------------------------------------------------- | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																CarlaEngine* CarlaEngine::newBridge(const char* const audioBaseName, const char* const controlBaseName, const char* const timeBaseName) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																CarlaEngine* CarlaEngine::newBridge(const char* const audioPoolBaseName, const char* const rtBaseName, const char* const nonRtBaseName) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    return new CarlaEngineBridge(audioBaseName, controlBaseName, timeBaseName); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    return new CarlaEngineBridge(audioPoolBaseName, rtBaseName, nonRtBaseName); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																CARLA_BACKEND_END_NAMESPACE | 
																 | 
																 | 
																CARLA_BACKEND_END_NAMESPACE | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |