summaryrefslogtreecommitdiff
path: root/gtk2_ardour/location_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-10-24 12:18:40 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-10-24 12:18:46 -0400
commitf90071113654c5d788e90196db5ee1dedd11172f (patch)
tree54e708b10f4df0687db03bda9feb3d16dc83ff38 /gtk2_ardour/location_ui.cc
parent2f4a8cf69394d4c6442381297136662af923f577 (diff)
port changes to ARDOUR::Location and ARDOUR::Locations APIs from Tracks to Ardour.
Fixes deadlocks caused by mutex on Locations list, and clarifies the purposes and uses of the class-level and object-level change-related signals.
Diffstat (limited to 'gtk2_ardour/location_ui.cc')
-rw-r--r--gtk2_ardour/location_ui.cc20
1 files changed, 4 insertions, 16 deletions
diff --git a/gtk2_ardour/location_ui.cc b/gtk2_ardour/location_ui.cc
index 538d7315bd..689706ba01 100644
--- a/gtk2_ardour/location_ui.cc
+++ b/gtk2_ardour/location_ui.cc
@@ -959,7 +959,7 @@ LocationUI::location_removed (Location* location)
}
void
-LocationUI::map_locations (Locations::LocationList& locations)
+LocationUI::map_locations (const Locations::LocationList& locations)
{
Locations::LocationList::iterator i;
gint n;
@@ -968,9 +968,8 @@ LocationUI::map_locations (Locations::LocationList& locations)
LocationSortByStart cmp;
temp.sort (cmp);
- locations = temp;
- for (n = 0, i = locations.begin(); i != locations.end(); ++n, ++i) {
+ for (n = 0, i = temp.begin(); i != temp.end(); ++n, ++i) {
Location* location = *i;
@@ -1074,10 +1073,10 @@ LocationUI::set_session(ARDOUR::Session* s)
SessionHandlePtr::set_session (s);
if (_session) {
- _session->locations()->changed.connect (_session_connections, invalidator (*this), boost::bind (&LocationUI::locations_changed, this, _1), gui_context());
- _session->locations()->StateChanged.connect (_session_connections, invalidator (*this), boost::bind (&LocationUI::refresh_location_list, this), gui_context());
_session->locations()->added.connect (_session_connections, invalidator (*this), boost::bind (&LocationUI::location_added, this, _1), gui_context());
_session->locations()->removed.connect (_session_connections, invalidator (*this), boost::bind (&LocationUI::location_removed, this, _1), gui_context());
+ _session->locations()->changed.connect (_session_connections, invalidator (*this), boost::bind (&LocationUI::refresh_location_list, this), gui_context());
+
_clock_group->set_clock_mode (clock_mode_from_session_instant_xml ());
}
@@ -1088,17 +1087,6 @@ LocationUI::set_session(ARDOUR::Session* s)
}
void
-LocationUI::locations_changed (Locations::Change c)
-{
- /* removal is signalled by both a removed and a changed signal emission from Locations,
- so we don't need to refresh the list on a removal
- */
- if (c != Locations::REMOVAL) {
- refresh_location_list ();
- }
-}
-
-void
LocationUI::session_going_away()
{
ENSURE_GUI_THREAD (*this, &LocationUI::session_going_away);