From 7c1ebd31c9c1eb7d93b532e5b13b2e0a857a863c Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 13 Apr 2022 20:11:37 +0200 Subject: [PATCH] Undoable add/remove bar (#6347) * Undoable add/remove bar * Don't add checkpoints to empty tracks Authored by: Spekular --- src/core/Song.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/core/Song.cpp b/src/core/Song.cpp index ec115f9a4..c52a1fa6f 100644 --- a/src/core/Song.cpp +++ b/src/core/Song.cpp @@ -775,10 +775,11 @@ void Song::stopExport() void Song::insertBar() { m_tracksMutex.lockForRead(); - for( TrackList::const_iterator it = tracks().begin(); - it != tracks().end(); ++it ) + for (Track* track: tracks()) { - ( *it )->insertBar( m_playPos[Mode_PlaySong] ); + // FIXME journal batch of tracks instead of each track individually + if (track->numOfClips() > 0) { track->addJournalCheckPoint(); } + track->insertBar(m_playPos[Mode_PlaySong]); } m_tracksMutex.unlock(); } @@ -789,10 +790,11 @@ void Song::insertBar() void Song::removeBar() { m_tracksMutex.lockForRead(); - for( TrackList::const_iterator it = tracks().begin(); - it != tracks().end(); ++it ) + for (Track* track: tracks()) { - ( *it )->removeBar( m_playPos[Mode_PlaySong] ); + // FIXME journal batch of tracks instead of each track individually + if (track->numOfClips() > 0) { track->addJournalCheckPoint(); } + track->removeBar(m_playPos[Mode_PlaySong]); } m_tracksMutex.unlock(); }