X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fautomation_watch.h;h=5c13184bc7d8c02ec232ad1b2c098e39f6488cc2;hb=6b1b72a247bf04c81292fc41af4f69c9b7f90379;hp=db6474c062b1bb7e5d9bb55bd1701495fa032ae6;hpb=7000afdc66c9e0ae8dcf9ec080517dabba1e7f34;p=ardour.git diff --git a/libs/ardour/ardour/automation_watch.h b/libs/ardour/ardour/automation_watch.h index db6474c062..5c13184bc7 100644 --- a/libs/ardour/ardour/automation_watch.h +++ b/libs/ardour/ardour/automation_watch.h @@ -14,9 +14,11 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA. - */ +#ifndef __ardour_automation_watch_h__ +#define __ardour_automation_watch_h__ + #include #include #include @@ -25,37 +27,45 @@ #include "pbd/signals.h" #include "ardour/session_handle.h" +#include "ardour/types.h" namespace ARDOUR { class AutomationControl; -class LIBARDOUR_API AutomationWatch : public sigc::trackable, public ARDOUR::SessionHandlePtr, public PBD::ScopedConnectionList { - public: - static AutomationWatch& instance(); - - void add_automation_watch (boost::shared_ptr); - void remove_automation_watch (boost::shared_ptr); - void set_session (ARDOUR::Session*); - - gint timer (); - - private: - typedef std::set > AutomationWatches; - - AutomationWatch (); - ~AutomationWatch(); - - static AutomationWatch* _instance; - Glib::Threads::Thread* _thread; - bool _run_thread; - AutomationWatches automation_watches; - Glib::Threads::Mutex automation_watch_lock; - PBD::ScopedConnection transport_connection; - - void transport_state_change (); - void remove_weak_automation_watch (boost::weak_ptr); - void thread (); +class LIBARDOUR_API AutomationWatch : public sigc::trackable, public ARDOUR::SessionHandlePtr +{ +public: + static AutomationWatch& instance(); + + void add_automation_watch (boost::shared_ptr); + void remove_automation_watch (boost::shared_ptr); + void transport_stop_automation_watches (ARDOUR::samplepos_t); + void set_session (ARDOUR::Session*); + + gint timer (); + +private: + typedef std::set > AutomationWatches; + typedef std::map, PBD::ScopedConnection> AutomationConnection; + + AutomationWatch (); + ~AutomationWatch(); + + static AutomationWatch* _instance; + Glib::Threads::Thread* _thread; + samplepos_t _last_time; + bool _run_thread; + AutomationWatches automation_watches; + AutomationConnection automation_connections; + Glib::Threads::Mutex automation_watch_lock; + PBD::ScopedConnection transport_connection; + + void transport_state_change (); + void remove_weak_automation_watch (boost::weak_ptr); + void thread (); }; -} +} /* namespace */ + +#endif // __ardour_automation_watch_h__