X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fengine_slave.cc;h=7ac767c3e84565054c99b0527353c9791b31207e;hb=a5e8a69dec467cc7d938cc3d92acb218b04486a9;hp=eb55c9ba540dc51e1a445d20723e6e5f5a550f62;hpb=300b484cf6ac14c15e365c4062345d64a61c4b18;p=ardour.git diff --git a/libs/ardour/engine_slave.cc b/libs/ardour/engine_slave.cc index eb55c9ba54..7ac767c3e8 100644 --- a/libs/ardour/engine_slave.cc +++ b/libs/ardour/engine_slave.cc @@ -21,6 +21,7 @@ #include #include "ardour/audioengine.h" +#include "ardour/audio_backend.h" #include "ardour/slave.h" using namespace std; @@ -30,7 +31,7 @@ Engine_Slave::Engine_Slave (AudioEngine& e) : engine (e) { double x; - framepos_t p; + samplepos_t p; /* call this to initialize things */ speed_and_position (x, p); } @@ -52,28 +53,15 @@ Engine_Slave::ok() const } bool -Engine_Slave::speed_and_position (double& sp, framepos_t& position) +Engine_Slave::speed_and_position (double& sp, samplepos_t& position) { - switch (engine.transport_state()) { - case TransportStopped: - speed = 0; - _starting = false; - break; - case TransportRolling: - speed = 1.0; - _starting = false; - break; - case TransportLooping: - speed = 1.0; + boost::shared_ptr backend = engine.current_backend(); + + if (backend) { + _starting = backend->speed_and_position (sp, position); + } else { _starting = false; - break; - case TransportStarting: - _starting = true; - // don't adjust speed here, just leave it as it was - break; } - sp = speed; - position = engine.transport_frame(); return true; }