From ea8f74ba1c5d0a814cd7fd6bfb890e0d88c4c2d2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mikko=20Kein=C3=A4nen?= Date: Sat, 9 Oct 2010 19:01:02 +0300 Subject: [PATCH] FilePath object is also deleted when deleting a MediaImageContainer object. --- src/dataobjects/mediaimagecontainer.cpp | 4 +--- src/dataobjects/mediaimagecontainer.h | 7 ++----- src/emulauncher.cpp | 3 +++ src/utils/fileutil.cpp | 10 ++-------- 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/dataobjects/mediaimagecontainer.cpp b/src/dataobjects/mediaimagecontainer.cpp index cfde86b..a394114 100644 --- a/src/dataobjects/mediaimagecontainer.cpp +++ b/src/dataobjects/mediaimagecontainer.cpp @@ -43,9 +43,7 @@ MediaImageContainer::MediaImageContainer(QString name, QString checksum, MediaImageContainer::~MediaImageContainer() { qDeleteAll(lstMediaImage); - //delete setup; - //delete filePath; // NOTE: this filePath object is shared resource and cannot be deleted here! - // take care of the deletion where created!!! + delete filePath; } MediaImageContainer::MediaImageContainer(MediaImageContainer &mic) diff --git a/src/dataobjects/mediaimagecontainer.h b/src/dataobjects/mediaimagecontainer.h index 6d2f1e6..5c51307 100644 --- a/src/dataobjects/mediaimagecontainer.h +++ b/src/dataobjects/mediaimagecontainer.h @@ -30,9 +30,9 @@ class MediaImageContainer : public EmuFrontFile public: MediaImageContainer(); MediaImageContainer(int id, QString name, QString checksum, - int size, QList images/*, Setup *setup*/, FilePathObject *fpo); + int size, QList images, FilePathObject *fpo); MediaImageContainer(QString name, QString checksum, - int size, QList images/*, Setup *setup*/, FilePathObject *fpo); + int size, QList images, FilePathObject *fpo); ~MediaImageContainer(); MediaImageContainer(MediaImageContainer&); MediaImageContainer& operator=(MediaImageContainer&); @@ -40,13 +40,10 @@ public: void setMediaImages(QList); void addMediaImage(MediaImage*); void clearMediaImages(); - /*void setSetup(Setup *); - Setup* getSetup() const;*/ void setFilePath(FilePathObject*); FilePathObject* getFilePath() const; private: QList lstMediaImage; - //Setup *setup; FilePathObject *filePath; }; diff --git a/src/emulauncher.cpp b/src/emulauncher.cpp index 1ac4964..90a6107 100644 --- a/src/emulauncher.cpp +++ b/src/emulauncher.cpp @@ -187,6 +187,9 @@ void EmuLauncher::launch(const Executable * ex, const MediaImageContainer * mic) // TODO: command parameters and assigning multiple media images cmdWithParams.append(" \"/tmp/").append(mic->getMediaImages().first()->getName()).append("\""); qDebug() << "Command with params " << cmdWithParams; + // Executable and MediaImageContainer objects are no more needed: + delete ex; + delete mic; if (!proc) proc = new QProcess(this); // This has to be done in the heap proc->start(cmdWithParams, QIODevice::ReadOnly); } diff --git a/src/utils/fileutil.cpp b/src/utils/fileutil.cpp index 2df70b4..b537294 100644 --- a/src/utils/fileutil.cpp +++ b/src/utils/fileutil.cpp @@ -20,6 +20,7 @@ FileUtil::~FileUtil() delete[] buf; } +/* Throws EmuFrontException */ QList FileUtil::scanFilePath(FilePathObject *fp, QStringList filters) { if (!fp->getSetup()){ @@ -65,14 +66,7 @@ QList FileUtil::scanFilePath(FilePathObject *fp, QStringLi QString("%1").arg(crc, 0, 16), fileInfo.size(), files, - // TODO: is it guaranteed, that the file path object containing the setup object remains alive - // the whole lifecycle of (this) media image container object? - // * if we assign a copy of the setup object -> waste of memory and time - // * this function is designed to be used from media image path main dialog - // where we can ensure the lifecycle of file path object -> maybe move the implementation there!? - // TODO: Ensure this! We really need a reference instead of 1000s of copies of setup object!!! - //fp->getSetup(), - fp + new FilePathObject(*fp) ); containers.append(con); qDebug() << "We have " << containers.size() << " containers."; -- 1.7.9.5