*/
-#include <list>
+#include <set>
#include <boost/shared_ptr.hpp>
-#include <glibmm/thread.h>
+#include <glibmm/threads.h>
#include <sigc++/signal.h>
#include "pbd/signals.h"
class AutomationControl;
-class AutomationWatch : public sigc::trackable, public ARDOUR::SessionHandlePtr, public PBD::ScopedConnectionList {
+class LIBARDOUR_API AutomationWatch : public sigc::trackable, public ARDOUR::SessionHandlePtr, public PBD::ScopedConnectionList {
public:
static AutomationWatch& instance();
gint timer ();
private:
- typedef std::list<boost::shared_ptr<ARDOUR::AutomationControl> > AutomationWatches;
+ typedef std::set<boost::shared_ptr<ARDOUR::AutomationControl> > AutomationWatches;
AutomationWatch ();
~AutomationWatch();
static AutomationWatch* _instance;
- Glib::Thread* _thread;
+ Glib::Threads::Thread* _thread;
+ framepos_t _last_time;
bool _run_thread;
AutomationWatches automation_watches;
- Glib::Mutex automation_watch_lock;
+ Glib::Threads::Mutex automation_watch_lock;
+ PBD::ScopedConnection transport_connection;
+ void transport_state_change ();
void remove_weak_automation_watch (boost::weak_ptr<ARDOUR::AutomationControl>);
void thread ();
};