#include <cerrno>
#include "ardour/audioengine.h"
+#include "ardour/audio_backend.h"
#include "ardour/slave.h"
using namespace std;
: engine (e)
{
double x;
- framepos_t p;
+ samplepos_t p;
/* call this to initialize things */
speed_and_position (x, p);
}
}
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<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;
}