Files
ardour/gtk2_ardour
Robin Gareus 4db1c02bd1 Fix crashes when rippling many regions
Region positions were updated in the GUI, before the playlist
was catching up.

The butler thread reads a region using the region's new position,
but the playlist's old range.


Thread 1 (GUI)
```
#22 ARDOUR::Playlist::notify_layering_changed()
#26 ARDOUR::AudioPlaylist::region_changed
#27 ARDOUR::Playlist::region_changed_proxy
#35 ARDOUR::Region::send_change
#36 ARDOUR::Region::set_position
#37 RegionRippleDrag::remove_unselected_from_views
#38 RegionRippleDrag::finished
```

LayeringChanged() also triggers DiskIOProcessor::playlist_modified
which schedules a pending-override and summons the butler.
Note that when moving only a few regions the butler starts after all
updates have been completed.

Butler thread:
```
#4  ARDOUR::AudioRegion::read_at
#5  ARDOUR::AudioPlaylist::read
#6  ARDOUR::DiskReader::audio_read
#7  ARDOUR::DiskReader::overwrite_existing_audio
#8  ARDOUR::DiskReader::overwrite_existing_buffers
#9  ARDOUR::Track::overwrite_existing_buffers
#10 ARDOUR::Session::non_realtime_overwrite
```

Region read fails:
```
 libs/ardour/audioregion.cc:503  assert (position >= _position);
(gdb) p position
$1 = 1312000
(gdb) p _position
$2 = {<PBD::PropertyTemplate<long>> = {_have_old = true,
    _current = 1336000, _old = 1312000} }
```
2021-05-07 21:56:09 +02:00
..
2021-03-17 23:15:33 +01:00
2021-05-07 05:38:57 +02:00
2021-03-23 23:25:00 +01:00
2020-03-06 15:54:00 -07:00
2020-09-16 22:49:20 +02:00
2021-04-27 23:50:59 +02:00
2021-03-15 20:58:43 +01:00
2020-03-11 15:13:18 +01:00
2021-04-13 00:10:38 +02:00
2021-04-13 00:10:38 +02:00
2021-03-16 16:49:49 -06:00
2020-03-15 20:19:13 +01:00
2021-02-21 07:14:49 -06:00
2021-05-05 17:43:28 +02:00
2021-04-13 00:10:38 +02:00
2020-03-17 16:31:49 -06:00
2021-04-12 23:15:31 +02:00
2021-04-12 23:15:30 +02:00
2021-04-11 15:15:04 +02:00
2021-03-27 23:14:19 +01:00
2021-05-05 17:43:28 +02:00
2020-04-10 23:50:10 +02:00
2021-03-28 17:43:17 +02:00
2021-03-26 02:33:56 +01:00
2020-02-19 16:58:06 +01:00
2020-02-19 16:58:06 +01:00
2021-04-13 00:10:41 +02:00
2020-09-15 17:35:04 +02:00
2021-01-02 23:19:40 +01:00
2020-04-10 23:50:10 +02:00
2020-04-10 23:50:10 +02:00
2021-01-29 02:58:25 +01:00
2021-05-05 17:43:28 +02:00
2021-05-05 17:43:28 +02:00
2020-12-17 16:15:33 +01:00
2021-02-22 00:59:56 +01:00
2020-04-04 01:48:31 +02:00
2020-09-16 22:49:19 +02:00
2021-04-03 14:56:15 +02:00
2020-09-17 00:10:21 +02:00
2021-04-13 00:10:38 +02:00
2021-05-06 11:42:50 -06:00
2021-03-15 22:12:31 +01:00
2021-05-05 17:43:28 +02:00
2021-03-27 17:58:45 +01:00
2021-05-05 17:43:28 +02:00
2021-02-25 04:11:06 +01:00
2021-05-05 17:43:28 +02:00
2021-05-05 17:43:28 +02:00
2020-03-29 14:56:50 +02:00
2021-05-05 17:43:28 +02:00
2020-09-17 00:10:21 +02:00
2020-12-14 19:29:53 +01:00
2020-09-17 00:10:21 +02:00