prevent deletion of playlists on frozen tracks:

bug:
1) freeze a track
2) Session Cleanup > Cleanup unused sources
2a) confirm playlist deletion
3) quit, reload ->  track is no longer frozen
  because _freeze_record.playlist is missing.
  session is in an odd state.
This commit is contained in:
Robin Gareus 2015-11-20 22:57:13 +01:00
parent 602839ffea
commit 619727ef73

View File

@ -56,6 +56,9 @@ AudioTrack::AudioTrack (Session& sess, string name, Route::Flag flag, TrackMode
AudioTrack::~AudioTrack ()
{
if (_freeze_record.playlist) {
_freeze_record.playlist->release();
}
}
boost::shared_ptr<Diskstream>
@ -287,6 +290,7 @@ AudioTrack::set_state_part_two ()
boost::shared_ptr<Playlist> pl = _session.playlists->by_name (prop->value());
if (pl) {
_freeze_record.playlist = boost::dynamic_pointer_cast<AudioPlaylist> (pl);
_freeze_record.playlist->use();
} else {
_freeze_record.playlist.reset ();
_freeze_record.state = NoFreeze;
@ -621,6 +625,8 @@ AudioTrack::freeze_me (InterThreadInfo& itt)
diskstream->use_playlist (boost::dynamic_pointer_cast<AudioPlaylist>(new_playlist));
diskstream->set_record_enabled (false);
_freeze_record.playlist->use(); // prevent deletion
/* reset stuff that has already been accounted for in the freeze process */
set_gain (GAIN_COEFF_UNITY, this);