From 00bd313e6e034834eddfa35edb6007f199eeefcd Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Wed, 1 Jun 2022 08:47:06 -0500 Subject: [PATCH] Mixer Scenes: fix code thinkos for sparsely-populated vector of scenes * don't create a new MixerScene if one already exists * only resize the vector when necessary * adding a new scene at position N should not shrink the vector size --- libs/ardour/session.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index d73bf0d4fa..512a3499b1 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -7525,10 +7525,12 @@ boost::shared_ptr Session::nth_mixer_scene (size_t nth, bool create_if_missing) { Glib::Threads::RWLock::ReaderLock lm (_mixer_scenes_lock); - if (create_if_missing && _mixer_scenes.size () <= nth) { + if (create_if_missing && (!_mixer_scenes[nth] || _mixer_scenes.size() <= nth) ) { lm.release (); Glib::Threads::RWLock::WriterLock lw (_mixer_scenes_lock); - _mixer_scenes.resize (nth + 1); + if (_mixer_scenes.size() <= nth) { + _mixer_scenes.resize (nth + 1); + } _mixer_scenes[nth] = boost::shared_ptr (new MixerScene (*this)); return _mixer_scenes[nth]; }