- _session.locations()->changed.connect_same_thread (*this, boost::bind (&MIDISceneChanger::locations_changed, this, _1));
- Location::scene_changed.connect_same_thread (*this, boost::bind (&MIDISceneChanger::gather, this));
+ /* catch any add/remove/clear etc. for all Locations */
+ _session.locations()->changed.connect_same_thread (*this, boost::bind (&MIDISceneChanger::locations_changed, this));
+ _session.locations()->added.connect_same_thread (*this, boost::bind (&MIDISceneChanger::locations_changed, this));
+ _session.locations()->removed.connect_same_thread (*this, boost::bind (&MIDISceneChanger::locations_changed, this));
+
+ /* catch class-based signal that notifies of us changes in the scene change state of any Location */
+ Location::scene_changed.connect_same_thread (*this, boost::bind (&MIDISceneChanger::locations_changed, this));