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]; }