From b946f08122259c8cdd6759bfc39bd172f1d5a9c5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 8 Apr 2025 03:30:56 -0500 Subject: [PATCH] fix cmd stream corruption when cmd stream playing --- src/engine/cmdStream.cpp | 6 ++++++ src/gui/csPlayer.cpp | 1 + 2 files changed, 7 insertions(+) diff --git a/src/engine/cmdStream.cpp b/src/engine/cmdStream.cpp index 19fc883ed..a819b13b9 100644 --- a/src/engine/cmdStream.cpp +++ b/src/engine/cmdStream.cpp @@ -644,6 +644,12 @@ bool DivCSPlayer::init() { bool DivEngine::playStream(unsigned char* f, size_t length) { BUSY_BEGIN; + // kill the previous player + if (cmdStreamInt) { + cmdStreamInt->cleanup(); + delete cmdStreamInt; + cmdStreamInt=NULL; + } cmdStreamInt=new DivCSPlayer(this,f,length); if (!cmdStreamInt->init()) { logE("not a command stream!"); diff --git a/src/gui/csPlayer.cpp b/src/gui/csPlayer.cpp index 9b4506c94..51a2cbb3a 100644 --- a/src/gui/csPlayer.cpp +++ b/src/gui/csPlayer.cpp @@ -206,6 +206,7 @@ void FurnaceGUI::drawCSPlayer() { } ImGui::SameLine(); if (ImGui::Button(_("Burn Current Song"))) { + e->killStream(); SafeWriter* w=e->saveCommand(NULL,csExportDisablePass); if (w!=NULL) { if (!e->playStream(w->getFinalBuf(),w->size())) {