X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fautomation_list.h;h=58d1fe4acf92352634e6d36e76d284e66125b7a9;hb=16f91163e5989ebdd224fbbe976e10e24b778d06;hp=923967448cf572b18035f7c79edd1fdca9233472;hpb=bc89fe0147c04b67141936d109c00dfd4d69cc4b;p=ardour.git diff --git a/libs/ardour/ardour/automation_list.h b/libs/ardour/ardour/automation_list.h index 923967448c..58d1fe4acf 100644 --- a/libs/ardour/ardour/automation_list.h +++ b/libs/ardour/ardour/automation_list.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002 Paul Davis + Copyright (C) 2002 Paul Davis 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 @@ -24,16 +24,15 @@ #include #include -#include #include -#include -#include -#include +#include "pbd/undo.h" +#include "pbd/xml++.h" +#include "pbd/statefuldestructible.h" -#include +#include "ardour/ardour.h" -#include +#include "evoral/ControlList.hpp" namespace ARDOUR { @@ -50,48 +49,48 @@ class AutomationList : public PBD::StatefulDestructible, public Evoral::ControlL AutomationList& operator= (const AutomationList&); bool operator== (const AutomationList&); - - void freeze(); + void thaw (); - void mark_dirty () const; void set_automation_state (AutoState); AutoState automation_state() const { return _state; } - sigc::signal automation_state_changed; + PBD::Signal1 automation_state_changed; void set_automation_style (AutoStyle m); AutoStyle automation_style() const { return _style; } - sigc::signal automation_style_changed; + PBD::Signal0 automation_style_changed; bool automation_playback() const { - return (_state & Play) || ((_state & Touch) && !_touching); + return (_state & Play) || ((_state & Touch) && !touching()); } bool automation_write () const { - return (_state & Write) || ((_state & Touch) && _touching); + return ((_state & Write) || ((_state & Touch) && touching())); } - - sigc::signal StateChanged; - - static sigc::signal AutomationListCreated; - mutable sigc::signal Dirty; - - void start_touch (); - void stop_touch (); - bool touching() const { return _touching; } - - XMLNode& get_state(void); - int set_state (const XMLNode &s); + + PBD::Signal0 StateChanged; + + static PBD::Signal1 AutomationListCreated; + + void start_touch (double when); + void stop_touch (bool mark, double when); + bool touching() const { return g_atomic_int_get (&_touching); } + bool writing() const { return _state == Write; } + bool touch_enabled() const { return _state == Touch; } + + XMLNode& get_state (); + int set_state (const XMLNode &, int version); XMLNode& state (bool full); XMLNode& serialize_events (); private: + void create_curve_if_necessary (); int deserialize_events (const XMLNode&); - + void maybe_signal_changed (); - - AutoState _state; - AutoStyle _style; - bool _touching; + + AutoState _state; + AutoStyle _style; + gint _touching; }; } // namespace