summaryrefslogtreecommitdiff
path: root/libs/evoral/src/Control.cpp
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-07-12 00:41:45 +0000
committerCarl Hetherington <carl@carlh.net>2010-07-12 00:41:45 +0000
commitd1b4599725abda6b8697151fd4a1bd3740ad2f2a (patch)
treea6c7035d9316f8a1c1fef9aa079a76a210b643a5 /libs/evoral/src/Control.cpp
parent6f5ee7c4293c43486d48bac00fdcdba90dabb17d (diff)
Mark Sequence as edited when one of its parent ControlSet's ControlLists is changed.
git-svn-id: svn://localhost/ardour2/branches/3.0@7404 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/evoral/src/Control.cpp')
-rw-r--r--libs/evoral/src/Control.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/libs/evoral/src/Control.cpp b/libs/evoral/src/Control.cpp
index 56277678ba..985c7b1352 100644
--- a/libs/evoral/src/Control.cpp
+++ b/libs/evoral/src/Control.cpp
@@ -26,9 +26,9 @@ Parameter::TypeMetadata Parameter::_type_metadata;
Control::Control(const Parameter& parameter, boost::shared_ptr<ControlList> list)
: _parameter(parameter)
- , _list(list)
, _user_value(list ? list->default_value() : parameter.normal())
{
+ set_list (list);
}
@@ -59,7 +59,19 @@ Control::set_float(float value, bool to_list, FrameTime frame)
void
Control::set_list(boost::shared_ptr<ControlList> list)
{
+ _list_marked_dirty_connection.disconnect ();
+
_list = list;
+
+ if (_list) {
+ _list->Dirty.connect_same_thread (_list_marked_dirty_connection, boost::bind (&Control::list_marked_dirty, this));
+ }
+}
+
+void
+Control::list_marked_dirty ()
+{
+ ListMarkedDirty (); /* EMIT SIGNAL */
}
} // namespace Evoral