Skip to content

Commit

Permalink
Continue transport work, link can now be enabled (untested)
Browse files Browse the repository at this point in the history
  • Loading branch information
falkTX committed Apr 8, 2017
1 parent 0956cc0 commit a6405a4
Show file tree
Hide file tree
Showing 13 changed files with 192 additions and 100 deletions.
6 changes: 0 additions & 6 deletions resources/ui/carla_panel_time.ui
Expand Up @@ -185,19 +185,13 @@
</item>
<item>
<widget class="QCheckBox" name="cb_transport_jack">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Use JACK Transport</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cb_transport_link">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Use Ableton Link</string>
</property>
Expand Down
1 change: 1 addition & 0 deletions source/backend/CarlaEngine.hpp
Expand Up @@ -225,6 +225,7 @@ struct CARLA_API EngineEvent {
struct CARLA_API EngineOptions {
EngineProcessMode processMode;
EngineTransportMode transportMode;
const char* transportExtra;

bool forceStereo;
bool preferPluginBridges;
Expand Down
6 changes: 4 additions & 2 deletions source/backend/CarlaStandalone.cpp
Expand Up @@ -314,7 +314,7 @@ bool carla_engine_init(const char* driverName, const char* clientName)
gStandalone.engine->setOption(CB::ENGINE_OPTION_PREFER_UI_BRIDGES, false, nullptr);
#else
gStandalone.engine->setOption(CB::ENGINE_OPTION_PROCESS_MODE, static_cast<int>(gStandalone.engineOptions.processMode), nullptr);
gStandalone.engine->setOption(CB::ENGINE_OPTION_TRANSPORT_MODE, static_cast<int>(gStandalone.engineOptions.transportMode), nullptr);
gStandalone.engine->setOption(CB::ENGINE_OPTION_TRANSPORT_MODE, static_cast<int>(gStandalone.engineOptions.transportMode), gStandalone.engineOptions.transportExtra);
#endif

carla_engine_init_common();
Expand Down Expand Up @@ -473,8 +473,10 @@ void carla_set_engine_option(EngineOption option, int value, const char* valueSt
break;

case CB::ENGINE_OPTION_TRANSPORT_MODE:
CARLA_SAFE_ASSERT_RETURN(value >= CB::ENGINE_TRANSPORT_MODE_INTERNAL && value < CB::ENGINE_TRANSPORT_MODE_BRIDGE,);
CARLA_SAFE_ASSERT_RETURN(value >= CB::ENGINE_TRANSPORT_MODE_INTERNAL && value <= CB::ENGINE_TRANSPORT_MODE_BRIDGE,);
gStandalone.engineOptions.transportMode = static_cast<CB::EngineTransportMode>(value);
delete[] gStandalone.engineOptions.transportExtra;
gStandalone.engineOptions.transportExtra = (valueStr != nullptr) ? carla_strdup_safe(valueStr) : nullptr;
break;

case CB::ENGINE_OPTION_FORCE_STEREO:
Expand Down
27 changes: 22 additions & 5 deletions source/backend/engine/CarlaEngine.cpp
Expand Up @@ -1344,19 +1344,19 @@ void CarlaEngine::setFileCallback(const FileCallbackFunc func, void* const ptr)
void CarlaEngine::transportPlay() noexcept
{
pData->timeInfo.playing = true;
pData->time.fillEngineTimeInfo(pData->timeInfo, 0);
pData->time.fillEngineTimeInfo(0);
}

void CarlaEngine::transportPause() noexcept
{
pData->timeInfo.playing = false;
pData->time.fillEngineTimeInfo(pData->timeInfo, 0);
pData->time.fillEngineTimeInfo(0);
}

void CarlaEngine::transportRelocate(const uint64_t frame) noexcept
{
pData->timeInfo.frame = frame;
pData->time.fillEngineTimeInfo(pData->timeInfo, 0);
pData->time.fillEngineTimeInfo(0);
}

// -----------------------------------------------------------------------
Expand Down Expand Up @@ -1416,6 +1416,16 @@ void CarlaEngine::setOption(const EngineOption option, const int value, const ch
case ENGINE_OPTION_TRANSPORT_MODE:
CARLA_SAFE_ASSERT_RETURN(value >= ENGINE_TRANSPORT_MODE_INTERNAL && value <= ENGINE_TRANSPORT_MODE_BRIDGE,);
pData->options.transportMode = static_cast<EngineTransportMode>(value);
delete[] pData->options.transportExtra;
pData->options.transportExtra = (valueStr != nullptr) ? carla_strdup_safe(valueStr) : nullptr;

#if defined(HAVE_HYLIA) && !defined(BUILD_BRIDGE)
// enable link now if needed
{
const bool linkEnabled = pData->options.transportExtra != nullptr && std::strstr(pData->options.transportExtra, ":link:") != nullptr;
pData->time.enableLink(linkEnabled);
}
#endif
break;

case ENGINE_OPTION_FORCE_STEREO:
Expand Down Expand Up @@ -1647,6 +1657,11 @@ void CarlaEngine::bufferSizeChanged(const uint32_t newBufferSize)
}
#endif

pData->time.updateAudioValues(newBufferSize, pData->sampleRate);

if (pData->options.transportMode == ENGINE_TRANSPORT_MODE_INTERNAL)
pData->time.fillEngineTimeInfo(0);

for (uint i=0; i < pData->curPluginCount; ++i)
{
CarlaPlugin* const plugin(pData->plugins[i].plugin);
Expand All @@ -1670,8 +1685,10 @@ void CarlaEngine::sampleRateChanged(const double newSampleRate)
}
#endif

pData->time.sampleRate = newSampleRate;
pData->time.fillEngineTimeInfo(pData->timeInfo, 0);
pData->time.updateAudioValues(pData->bufferSize, newSampleRate);

if (pData->options.transportMode == ENGINE_TRANSPORT_MODE_INTERNAL)
pData->time.fillEngineTimeInfo(0);

for (uint i=0; i < pData->curPluginCount; ++i)
{
Expand Down
4 changes: 2 additions & 2 deletions source/backend/engine/CarlaEngineBridge.cpp
@@ -1,6 +1,6 @@
/*
* Carla Plugin Host
* Copyright (C) 2011-2015 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2017 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
Expand Down Expand Up @@ -472,7 +472,7 @@ class CarlaEngineBridge : public CarlaEngine,
CARLA_SAFE_ASSERT_INT(opcode == kPluginBridgeNonRtClientSetSampleRate, opcode);
pData->sampleRate = fShmNonRtClientControl.readDouble();

pData->initTime();
pData->initTime(nullptr);

if (shmRtClientDataSize != sizeof(BridgeRtClientData) || shmNonRtClientDataSize != sizeof(BridgeNonRtClientData) || shmNonRtServerDataSize != sizeof(BridgeNonRtServerData))
return false;
Expand Down
1 change: 1 addition & 0 deletions source/backend/engine/CarlaEngineData.cpp
Expand Up @@ -190,6 +190,7 @@ EngineOptions::EngineOptions() noexcept
: processMode(ENGINE_PROCESS_MODE_PATCHBAY),
transportMode(ENGINE_TRANSPORT_MODE_INTERNAL),
#endif
transportExtra(nullptr),
forceStereo(false),
preferPluginBridges(false),
#ifdef CARLA_OS_WIN
Expand Down

0 comments on commit a6405a4

Please sign in to comment.