summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/transport_api.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-09-17 18:26:03 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2019-09-17 18:26:03 -0600
commitbd229936ec2cb30fe3360f2d83ffc7197fd6fb97 (patch)
tree84e41e048d76541d5d491ccefe8c7feaa14f4d5c /libs/ardour/ardour/transport_api.h
parentfc3e7623e7a4c7fdeebf84c4d47eaf04d9bc744d (diff)
add finite state machine to control/manage transport state
Diffstat (limited to 'libs/ardour/ardour/transport_api.h')
-rw-r--r--libs/ardour/ardour/transport_api.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/libs/ardour/ardour/transport_api.h b/libs/ardour/ardour/transport_api.h
new file mode 100644
index 0000000000..8ca7aeb074
--- /dev/null
+++ b/libs/ardour/ardour/transport_api.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2019 Paul Davis <paul@linuxaudiosystems.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _ardour_transport_api_h_
+#define _ardour_transport_api_h_
+
+#include "ardour/types.h"
+#include "ardour/libardour_visibility.h"
+
+namespace ARDOUR
+{
+
+class LIBARDOUR_API TransportAPI
+{
+ public:
+ TransportAPI() {}
+ virtual ~TransportAPI() {}
+
+ private:
+ friend struct TransportFSM;
+
+ virtual void locate (samplepos_t, bool with_roll, bool with_flush, bool with_loop=false, bool force=false, bool with_mmc=true) = 0;
+ virtual void stop_transport (bool abort = false, bool clear_state = false) = 0;
+ virtual void start_transport () = 0;
+ virtual void butler_completed_transport_work () = 0;
+ virtual void schedule_butler_for_transport_work () = 0;
+ virtual bool should_roll_after_locate () const = 0;
+};
+
+} /* end namespace ARDOUR */
+
+#endif