summaryrefslogtreecommitdiff
path: root/libs/ardour/engine_slave.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/engine_slave.cc')
-rw-r--r--libs/ardour/engine_slave.cc26
1 files changed, 7 insertions, 19 deletions
diff --git a/libs/ardour/engine_slave.cc b/libs/ardour/engine_slave.cc
index eb55c9ba54..849b7320d3 100644
--- a/libs/ardour/engine_slave.cc
+++ b/libs/ardour/engine_slave.cc
@@ -21,6 +21,7 @@
#include <cerrno>
#include "ardour/audioengine.h"
+#include "ardour/audio_backend.h"
#include "ardour/slave.h"
using namespace std;
@@ -54,26 +55,13 @@ Engine_Slave::ok() const
bool
Engine_Slave::speed_and_position (double& sp, framepos_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<AudioBackend> 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;
}