ardour/libs
Robin Gareus 7f862298cf
Fix loading playlists of old sessions
Previously when loading Ardour v2, v3-5 sessions, tracks were
created with a dummy name "toBeResetFroXML".

In v6, Track::init() creates a playlist when the track name is
not empty. Later Track::set_state() calls set_name(). When a
playlist exists, the playlist's name is set to match the track's name.

When loading v6 sessions none of this happens. A previously loaded
playlist will be assigned by ID.

Older versions identified Playlists by name and by the time the
playlist is assigned, there may be ambiguities. With the default
(track-name = playlist-name) two playlists with the same name exist:

 (1) the playlist loaded from the session file
 (2) the playlist created by Track::init()

Playlists are stored in an ordered std::set<shared_ptr<Playlist>>,
and name-lookup iterates over the set.

When loading an old session after starting Ardour, it is very
likely to always lookup the playlist (1), because new, later
allocations from (2) are on top of the heap and ordered last.

The session seemingly loads correctly, except for lingering,
unused empty playlists "toBeResetFroXML" renamed to "Track name"
that were never deleted.

However when loading an old session from a running instance,
ordering is mostly random, and many tracks end up with using
the empty playlist (2) instead of the correct playlist (1).
2020-03-15 13:34:13 +01:00
..
appleutility NO-OP: fix some Wimplicit-fallthrough 2019-09-18 17:37:54 +02:00
ardour Fix loading playlists of old sessions 2020-03-15 13:34:13 +01:00
ardouralsautil Suffix complete hw: ID to make ALSA card names unique 2019-08-16 20:00:29 +02:00
audiographer Fix some doxygen warnings 2020-03-02 17:58:03 +01:00
backends Fix Coreaudio buffersize changes 2020-03-06 05:52:55 +01:00
canvas Remove unused forward declaration. 2020-02-24 23:01:15 +01:00
clearlooks-newer Special case checkbox border color in Treeview 2020-01-25 03:40:04 +01:00
evoral Fix building unit-tests 2020-01-27 17:43:37 +01:00
fluidsynth Amend previous commit, fluidsynth tables 2019-12-03 00:23:54 +01:00
fst Fix cross-compile linking (arm-linux ld) 2020-02-14 00:20:45 +01:00
gtkmm2ext Replace strftime() with Glib::DateTime() 2020-03-08 23:31:51 +01:00
hidapi remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead 2018-10-14 22:06:11 -04:00
libltc Fix use of doxygen documented parameters in running text 2019-09-30 06:30:11 +02:00
lua Fix some doxygen warnings 2020-03-02 17:58:03 +01:00
midi++2 Fix building unit-tests 2020-01-27 17:43:37 +01:00
panners Explicitly use OSX 2020-01-25 04:07:41 +01:00
pbd mingw/gcc-8: use glib's stat(), drop hardlink support 2020-03-13 01:21:51 +01:00
plugins Fix previous commit (increase max, not default) 2020-03-02 02:26:10 +01:00
ptformat ptformat: Update to upstream 55f08d8 (simplify version detection) 2020-02-09 17:55:48 +11:00
qm-dsp Do not install static libs 2020-01-22 02:00:25 +01:00
surfaces Adhere to Ardour style guide - 810b2fb78d 2020-03-10 09:41:50 -05:00
temporal NO-OP: whitespace 2020-01-14 00:52:24 +01:00
vamp-plugins Increase accuracy of analyzed true-peak positions 2020-03-06 04:13:09 +01:00
vamp-pyin Fix -Wsign-compare 2019-09-03 05:01:59 +02:00
vfork Update utility and tools GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
waveview NO-OP: whitespace 2020-01-14 00:52:24 +01:00
widgets Tweak ArdorIcon display-tool & re-order icons 2020-02-22 21:40:35 +01:00
zita-convolver Exclude zita-convolver from being available as external lib 2020-03-02 20:06:59 +01:00
zita-resampler Do not install static libs 2020-01-22 02:00:25 +01:00