summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-04-02 00:21:08 +0000
committerCarl Hetherington <carl@carlh.net>2010-04-02 00:21:08 +0000
commitb68256a8ff670d0f9206858daa69e1bdf7810684 (patch)
treea29890adce503a5aa0c433f068479d7bdc2d9a4c /libs
parent0fc44fc2f1b9d9706e67abe8a41c70ca3231af60 (diff)
Fix up route group state signal handling. Make the PropertyList version
of Stateful::set_properties emit a changed signal after it has done its work. git-svn-id: svn://localhost/ardour2/branches/3.0@6826 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/route_group.h4
-rw-r--r--libs/ardour/route_group.cc32
-rw-r--r--libs/pbd/stateful.cc2
-rw-r--r--libs/pbd/stateful_diff_command.cc11
4 files changed, 13 insertions, 36 deletions
diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h
index 7f3d25454a..c7616a746e 100644
--- a/libs/ardour/ardour/route_group.h
+++ b/libs/ardour/ardour/route_group.h
@@ -128,8 +128,8 @@ class RouteGroup : public SessionObject
boost::shared_ptr<RouteList> route_list() { return routes; }
- PBD::Signal0<void> changed;
- PBD::Signal1<void,void*> FlagsChanged;
+ /** Emitted when a route has been added to or removed from this group */
+ PBD::Signal0<void> MembershipChanged;
XMLNode& get_state ();
diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc
index 3e9ffe16d6..f0a9125770 100644
--- a/libs/ardour/route_group.cc
+++ b/libs/ardour/route_group.cc
@@ -92,7 +92,7 @@ RouteGroup::RouteGroup (Session& s, const string &n)
, routes (new RouteList)
, ROUTE_GROUP_DEFAULT_PROPERTIES
{
- _xml_node_name = X_("RegionGroup");
+ _xml_node_name = X_("RouteGroup");
add_property (_relative);
add_property (_active);
@@ -135,7 +135,7 @@ RouteGroup::add (boost::shared_ptr<Route> r)
r->DropReferences.connect_same_thread (*this, boost::bind (&RouteGroup::remove_when_going_away, this, boost::weak_ptr<Route> (r)));
_session.set_dirty ();
- changed (); /* EMIT SIGNAL */
+ MembershipChanged (); /* EMIT SIGNAL */
return 0;
}
@@ -158,7 +158,7 @@ RouteGroup::remove (boost::shared_ptr<Route> r)
r->leave_route_group ();
routes->erase (i);
_session.set_dirty ();
- changed (); /* EMIT SIGNAL */
+ MembershipChanged (); /* EMIT SIGNAL */
return 0;
}
@@ -339,7 +339,6 @@ RouteGroup::set_active (bool yn, void *src)
}
_active = yn;
_session.set_dirty ();
- FlagsChanged (src); /* EMIT SIGNAL */
}
void
@@ -351,7 +350,6 @@ RouteGroup::set_relative (bool yn, void *src)
}
_relative = yn;
_session.set_dirty ();
- FlagsChanged (src); /* EMIT SIGNAL */
}
void
@@ -372,7 +370,6 @@ RouteGroup::set_hidden (bool yn, void *src)
}
}
_session.set_dirty ();
- FlagsChanged (src); /* EMIT SIGNAL */
}
void
@@ -442,25 +439,10 @@ RouteGroup::destroy_subgroup ()
bool
RouteGroup::enabled_property (PBD::PropertyID prop)
{
- if (Properties::relative.property_id == prop) {
- return is_relative();
- } else if (Properties::active.property_id == prop) {
- return is_active();
- } else if (Properties::hidden.property_id == prop) {
- return is_hidden();
- } else if (Properties::gain.property_id == prop) {
- return is_gain();
- } else if (Properties::mute.property_id == prop) {
- return is_mute();
- } else if (Properties::solo.property_id == prop) {
- return is_solo();
- } else if (Properties::recenable.property_id == prop) {
- return is_recenable();
- } else if (Properties::select.property_id == prop) {
- return is_select();
- } else if (Properties::edit.property_id == prop) {
- return is_edit();
+ OwnedPropertyList::iterator i = _properties->find (prop);
+ if (i == _properties->end()) {
+ return false;
}
- return false;
+ return dynamic_cast<const PropertyTemplate<bool>* > (i->second)->val ();
}
diff --git a/libs/pbd/stateful.cc b/libs/pbd/stateful.cc
index 79936c691f..b486319c4c 100644
--- a/libs/pbd/stateful.cc
+++ b/libs/pbd/stateful.cc
@@ -220,6 +220,8 @@ Stateful::set_properties (const PropertyList& property_list)
post_set ();
+ send_change (c);
+
return c;
}
diff --git a/libs/pbd/stateful_diff_command.cc b/libs/pbd/stateful_diff_command.cc
index 0468ac3e8a..635fe4829a 100644
--- a/libs/pbd/stateful_diff_command.cc
+++ b/libs/pbd/stateful_diff_command.cc
@@ -71,10 +71,7 @@ StatefulDiffCommand::operator() ()
boost::shared_ptr<Stateful> s (_object.lock());
if (s) {
- PropertyChange changed = s->set_properties (*_redo);
- if (!changed.empty()) {
- s->PropertyChanged (changed);
- }
+ s->set_properties (*_redo);
}
}
@@ -85,11 +82,7 @@ StatefulDiffCommand::undo ()
if (s) {
std::cerr << "Undoing a stateful diff command\n";
- PropertyChange changed = s->set_properties (*_undo);
- if (!changed.empty()) {
- std::cerr << "Sending changed\n";
- s->PropertyChanged (changed);
- }
+ s->set_properties (*_undo);
}
}