From db7b38f568631de29c215f1828c1f823966cc3a3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mikko=20Kein=C3=A4nen?= Date: Fri, 19 Nov 2010 00:05:30 +0200 Subject: [PATCH] Some comments about heap-objects and cleaning up some heap-objects. --- src/dialogs/dbobjectdialog.cpp | 5 ++++- src/dialogs/executableeditdialog.cpp | 1 + src/dialogs/mediaimagepathdialog.cpp | 1 + src/dialogs/setupeditdialog.cpp | 2 ++ src/emulauncher.cpp | 14 ++++++++------ src/widgets/efcombobox.cpp | 7 ++++++- 6 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/dialogs/dbobjectdialog.cpp b/src/dialogs/dbobjectdialog.cpp index 206e8be..6799744 100644 --- a/src/dialogs/dbobjectdialog.cpp +++ b/src/dialogs/dbobjectdialog.cpp @@ -113,7 +113,10 @@ void DbObjectDialog::editObject() deleteCurrentObject(); try { dbObject = dbManager->getDataObjectFromModel(&index); // throws EmuFrontException - } catch (EmuFrontException &e) { errorMessage->showMessage(e.what()); } + } catch (EmuFrontException &e) { + errorMessage->showMessage(e.what()); + return; + } activateNameDialog(); nameDialog->setDataObject(dbObject); } diff --git a/src/dialogs/executableeditdialog.cpp b/src/dialogs/executableeditdialog.cpp index ca640a8..b878a97 100644 --- a/src/dialogs/executableeditdialog.cpp +++ b/src/dialogs/executableeditdialog.cpp @@ -154,6 +154,7 @@ void ExecutableEditDialog::setSelectedSetup(const Setup *su) setupComBox->setSelected(su); } +/* Returns a pointer to a Setup object which must be deleted by calling code! */ Setup* ExecutableEditDialog::getSelectedSetup() { EmuFrontObject *o = 0; diff --git a/src/dialogs/mediaimagepathdialog.cpp b/src/dialogs/mediaimagepathdialog.cpp index f3b4b1e..facdf1a 100644 --- a/src/dialogs/mediaimagepathdialog.cpp +++ b/src/dialogs/mediaimagepathdialog.cpp @@ -100,6 +100,7 @@ void MediaImagePathDialog::setSelectedSetup(const Setup *sup) setupComBox->setSelected(sup); } +/* Returns a pointer to Setup object which must be deleted by calling code */ Setup* MediaImagePathDialog::getSelectedSetup() { EmuFrontObject *ob = 0; diff --git a/src/dialogs/setupeditdialog.cpp b/src/dialogs/setupeditdialog.cpp index 0b4f18a..e46214b 100644 --- a/src/dialogs/setupeditdialog.cpp +++ b/src/dialogs/setupeditdialog.cpp @@ -143,6 +143,7 @@ void SetupEditDialog::setSelectedMediaType(const MediaType *plf) mediaTypeComBox->setSelected(plf); } +/* Returns a pointer to an object which must be deleted by calling code */ Platform* SetupEditDialog::getSelectedPlatform() { EmuFrontObject *o = 0; @@ -156,6 +157,7 @@ Platform* SetupEditDialog::getSelectedPlatform() return plf; } +/* Returns a pointer to an object which must be deleted by calling code */ MediaType* SetupEditDialog::getSelectedMediaType() { EmuFrontObject *o = 0; diff --git a/src/emulauncher.cpp b/src/emulauncher.cpp index 890d5e0..f141afe 100644 --- a/src/emulauncher.cpp +++ b/src/emulauncher.cpp @@ -104,18 +104,20 @@ void EmuLauncher::updateMediaImageContainers() { qDebug() << "updateMediaImageContainers slot"; int mtid, plfid = -1; + MediaType *mt = 0; + Platform *plf = 0; try { - mtid = mediaTypeSelectBox->getSelected() - ? mediaTypeSelectBox->getSelected()->getId() - : -1; - plfid = platformSelectBox->getSelected() - ? platformSelectBox->getSelected()->getId() - : -1; + mt = dynamic_cast(mediaTypeSelectBox->getSelected()); + plf = dynamic_cast(platformSelectBox->getSelected()); } catch(EmuFrontException &e){ errorMessage->showMessage(e.what()); return; } + mtid = mt ? mt->getId() : -1; + plfid = plf ? plf->getId() : -1; + if (mt) delete mt; + if (plf) delete plf; if (!dbMic) dbMic = new DbMediaImageContainer(this); dbMic->filter(mtid, plfid); diff --git a/src/widgets/efcombobox.cpp b/src/widgets/efcombobox.cpp index bcd32b1..5a8db80 100644 --- a/src/widgets/efcombobox.cpp +++ b/src/widgets/efcombobox.cpp @@ -44,7 +44,12 @@ void EFComboBox::updateDataModel(bool reset) setModel(model); } -/* Throws EmuFrontException */ +/* + Returns a pointer to EmuFrontObject which should be deleted + later by calling code! + + Throws EmuFrontException +*/ EmuFrontObject* EFComboBox::getSelected() const { EmuFrontObject *efo = 0; -- 1.7.9.5