diff --git a/src/guis/GuiMetaDataEd.cpp b/src/guis/GuiMetaDataEd.cpp index 0d6f00430..5149bee96 100644 --- a/src/guis/GuiMetaDataEd.cpp +++ b/src/guis/GuiMetaDataEd.cpp @@ -130,6 +130,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector std::vector< std::shared_ptr > buttons; buttons.push_back(std::make_shared(mWindow, "SCRAPE", "scrape", std::bind(&GuiMetaDataEd::fetch, this))); buttons.push_back(std::make_shared(mWindow, "SAVE", "save", [&] { save(); delete this; })); + buttons.push_back(std::make_shared(mWindow, "CANCEL", "cancel", [&] { delete this; })); if(mDeleteFunc) { @@ -211,7 +212,7 @@ void GuiMetaDataEd::close(bool closeAllWindows) } std::function closeFunc; - if(closeAllWindows) + if(!closeAllWindows) { closeFunc = [this] { delete this; }; }else{ diff --git a/src/guis/GuiMsgBox.cpp b/src/guis/GuiMsgBox.cpp index 9261ab167..24fb2574e 100644 --- a/src/guis/GuiMsgBox.cpp +++ b/src/guis/GuiMsgBox.cpp @@ -90,10 +90,12 @@ void GuiMsgBox::onSizeChanged() void GuiMsgBox::deleteMeAndCall(const std::function& func) { - if(func) - func(); - + auto funcCopy = func; delete this; + + if(funcCopy) + funcCopy(); + } std::vector GuiMsgBox::getHelpPrompts() diff --git a/src/main.cpp b/src/main.cpp index 07f70635a..06dc8a229 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -273,6 +273,9 @@ int main(int argc, char* argv[]) } window.deinit(); + while(window.peekGui() != window.getViewController()) + delete window.peekGui(); + SystemData::deleteSystems(); LOG(LogInfo) << "EmulationStation cleanly shutting down.";