stop looping when deleting loop-range (fixes potential crash)
authorRobin Gareus <robin@gareus.org>
Sat, 28 Jan 2017 11:04:00 +0000 (12:04 +0100)
committerRobin Gareus <robin@gareus.org>
Sat, 28 Jan 2017 11:05:50 +0000 (12:05 +0100)
libs/ardour/location.cc

index 1b53c705d8cd5fac9f30fbca5ab2ac5b81ad695d..77177391b05ae30898491874736951bc7d8fb876 100644 (file)
@@ -1035,6 +1035,7 @@ Locations::remove (Location *loc)
 
                for (i = locations.begin(); i != locations.end(); ++i) {
                        if ((*i) == loc) {
+                               bool was_loop = (*i)->is_auto_loop();
                                delete *i;
                                locations.erase (i);
                                was_removed = true;
@@ -1042,6 +1043,12 @@ Locations::remove (Location *loc)
                                        current_location = 0;
                                        was_current = true;
                                }
+                               if (was_loop) {
+                                       if (_session.get_play_loop()) {
+                                               _session.request_play_loop (false, false);
+                                       }
+                                       _session.auto_loop_location_changed (0);
+                               }
                                break;
                        }
                }