diff --git a/src/ProjectManager.cpp b/src/ProjectManager.cpp index e30c5fae5..8c1b3338b 100644 --- a/src/ProjectManager.cpp +++ b/src/ProjectManager.cpp @@ -15,7 +15,6 @@ Paul Licameli split from AudacityProject.cpp #include "AdornedRulerPanel.h" #include "AudioIO.h" #include "Clipboard.h" -#include "DBConnection.h" #include "FileNames.h" #include "Menus.h" #include "ModuleManager.h" @@ -741,16 +740,12 @@ void ProjectManager::OnCloseWindow(wxCloseEvent & event) projectFileIO.SetBypass(); { - TransactionScope trans(projectFileIO.GetConnection(), "Shutdown"); - // This can reduce reference counts of sample blocks in the project's // tracks. UndoManager::Get( project ).ClearStates(); // Delete all the tracks to free up memory tracks.Clear(); - - trans.Commit(); } // We're all done with the project file, so close it now diff --git a/src/UndoManager.cpp b/src/UndoManager.cpp index 1bb325418..70c5694d1 100644 --- a/src/UndoManager.cpp +++ b/src/UndoManager.cpp @@ -26,6 +26,7 @@ UndoManager #include #include "Clipboard.h" +#include "DBConnection.h" #include "Diags.h" #include "Project.h" #include "SampleBlock.h" @@ -181,12 +182,20 @@ void UndoManager::RemoveStateAt(int n) void UndoManager::RemoveStates(int num) { + Optional pTrans; + auto pConnection = ConnectionPtr::Get(mProject).mpConnection.get(); + if (pConnection) + pTrans.emplace(*pConnection, "DiscardingUndoStates"); + for (int i = 0; i < num; i++) { RemoveStateAt(0); current -= 1; saved -= 1; } + + if (pTrans) + pTrans->Commit(); } void UndoManager::ClearStates()