diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-09-17 18:26:03 -0600 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-09-17 18:26:03 -0600 |
commit | bd229936ec2cb30fe3360f2d83ffc7197fd6fb97 (patch) | |
tree | 84e41e048d76541d5d491ccefe8c7feaa14f4d5c /libs/ardour/ardour/transport_api.h | |
parent | fc3e7623e7a4c7fdeebf84c4d47eaf04d9bc744d (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.h | 47 |
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 |