diff --git a/src/engine/song.cpp b/src/engine/song.cpp index 7e6fb5e6f..e457478e4 100644 --- a/src/engine/song.cpp +++ b/src/engine/song.cpp @@ -278,6 +278,24 @@ void DivSubSong::clearData() { ordersLen=1; } +void DivSubSong::removeUnusedPatterns() { + for (int i=0; i& orders, std::vector& grooves, int& length, int chans, int jumpTreatment, int ignoreJumpAtEnd, int firstPat=0); void clearData(); + void removeUnusedPatterns(); void optimizePatterns(); void rearrangePatterns(); void sortOrders(); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 64de23ef3..de659e37a 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6553,6 +6553,14 @@ bool FurnaceGUI::loop() { MARK_MODIFIED; ImGui::CloseCurrentPopup(); } + if (ImGui::Button(_("Remove unused patterns"))) { + stop(); + e->lockEngine([this]() { + e->curSubSong->removeUnusedPatterns(); + }); + MARK_MODIFIED; + ImGui::CloseCurrentPopup(); + } if (ImGui::Button(_("Remove unused instruments"))) { stop(); e->delUnusedIns();