From c289c6a9976fe3222a607b8de5cab53e001a398b Mon Sep 17 00:00:00 2001 From: Harry van Haaren Date: Tue, 20 Sep 2016 20:10:51 +0100 Subject: [PATCH] fix JACK transport state control --- src/jack.cxx | 9 ++++++++- src/jack.hxx | 2 ++ src/timemanager.cxx | 4 ++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/jack.cxx b/src/jack.cxx index 0bf7d70..3acd3f7 100644 --- a/src/jack.cxx +++ b/src/jack.cxx @@ -267,7 +267,14 @@ Jack::~Jack() void Jack::activate() { jack_activate( client ); - //jack_transport_start(client); +} + +void Jack::transportRolling(bool rolling) +{ + if(rolling) + jack_transport_start(client); + else + jack_transport_stop(client); } void Jack::quit() diff --git a/src/jack.hxx b/src/jack.hxx index 123101a..77c190f 100644 --- a/src/jack.hxx +++ b/src/jack.hxx @@ -80,6 +80,8 @@ class Jack GridLogic* getGridLogic(){return gridLogic;} TimeManager* getTimeManager(){return timeManager;} ControllerUpdater* getControllerUpdater(){return controllerUpdater;} + + void transportRolling(bool rolling); /// register a MIDI observer void registerMidiIO( MidiIO* mo ); diff --git a/src/timemanager.cxx b/src/timemanager.cxx index e361fc4..e606d49 100644 --- a/src/timemanager.cxx +++ b/src/timemanager.cxx @@ -162,6 +162,10 @@ int TimeManager::getNframesToBeat() void TimeManager::setTransportState( TRANSPORT_STATE s ) { transportState = s; + if(transportState == TRANSPORT_STOPPED) + jack->transportRolling(false); + else + jack->transportRolling(true); } void TimeManager::process(Buffers* buffers)