Qt: Fix race condition when using cheats (#792)
Some checks are pending
Android Build / x64 (release) (push) Waiting to run
Android Build / arm64 (release) (push) Waiting to run
HTTP Server Build / build (push) Waiting to run
Hydra Core Build / Windows (push) Waiting to run
Hydra Core Build / MacOS (push) Waiting to run
Hydra Core Build / Linux (push) Waiting to run
Hydra Core Build / Android-x64 (push) Waiting to run
Hydra Core Build / ARM-Libretro (push) Waiting to run
Linux AppImage Build / build (push) Waiting to run
Linux Build / build (push) Waiting to run
MacOS Build / MacOS-arm64 (push) Waiting to run
MacOS Build / MacOS-x86_64 (push) Waiting to run
MacOS Build / MacOS-Universal (push) Blocked by required conditions
Qt Build / MacOS-Universal (push) Blocked by required conditions
Qt Build / Linux (push) Waiting to run
Hardware Test Build / build (push) Waiting to run
Qt Build / Windows (push) Waiting to run
Qt Build / MacOS-arm64 (push) Waiting to run
Qt Build / MacOS-x86_64 (push) Waiting to run
Windows Build / build (push) Waiting to run
iOS Simulator Build / build (push) Waiting to run

* Qt: Fix race condition when using cheats

* Nit
This commit is contained in:
wheremyfoodat 2025-07-24 17:17:40 +03:00 committed by GitHub
commit 3ac5f1b0c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -70,8 +70,6 @@ void CheatEntryWidget::editClicked() {
CheatEditDialog::CheatEditDialog(Emulator* emu, CheatEntryWidget& cheatEntry) : QDialog(), emu(emu), cheatEntry(cheatEntry) {
setWindowTitle(tr("Edit Cheat"));
setAttribute(Qt::WA_DeleteOnClose);
setModal(true);
QVBoxLayout* layout = new QVBoxLayout;
@ -147,6 +145,9 @@ void CheatEditDialog::accepted() {
cheatEntry.setMetadata(metadata);
cheatEntry.Update();
}
// Delete the CheatEditDialog when the main thread is done using it
QObject::deleteLater();
});
});
}
@ -157,6 +158,9 @@ void CheatEditDialog::rejected() {
// Was adding a cheat but user pressed cancel
cheatEntry.Remove();
}
// We have to manually memory-manage the CheatEditDialog object since it's accessed via multiple threads
QObject::deleteLater();
}
CheatsWindow::CheatsWindow(Emulator* emu, const std::filesystem::path& cheatPath, QWidget* parent)