Fixed an error with deletion of a shared resource (filePath-object) ...
authorMikko Keinänen <mikko.keinanen@gmail.com>
Mon, 27 Sep 2010 21:58:33 +0000 (00:58 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Mon, 27 Sep 2010 21:58:33 +0000 (00:58 +0300)
TODO: filePath object still needed to delete where created!

src/dataobjects/mediaimagecontainer.cpp
src/dataobjects/mediaimagecontainer.h
src/dialogs/mediaimagepathmaindialog.cpp

index 8671cd2..eb33241 100644 (file)
@@ -17,6 +17,7 @@
 // You should have received a copy of the GNU General Public License
 // along with EmuFront.  If not, see <http://www.gnu.org/licenses/>.
 
+#include <QDebug>
 #include "mediaimagecontainer.h"
 
 MediaImageContainer::MediaImageContainer()
@@ -43,7 +44,8 @@ MediaImageContainer::~MediaImageContainer()
 {
     qDeleteAll(lstMediaImage);
     //delete setup;
-    delete filePath;
+    //delete filePath; // TODO: this filePath object is shared resource and cannot be deleted here!
+                    // take care of the deletion where created!!!
 }
 
 MediaImageContainer::MediaImageContainer(MediaImageContainer &mic)
@@ -84,6 +86,17 @@ QList<MediaImage *> MediaImageContainer::getMediaImages() const
 void MediaImageContainer::addMediaImage(MediaImage *mi)
 {   lstMediaImage.append(mi); }
 
+void MediaImageContainer::clearMediaImages()
+{
+    qDeleteAll(lstMediaImage);
+    /*foreach(MediaImage *mi, lstMediaImage) {
+        delete mi;
+        mi = 0;
+    }*/
+    lstMediaImage.clear();
+    qDebug() << lstMediaImage.count();
+}
+
 /*Setup* MediaImageContainer::getSetup() const
 { return setup; }
 
index 419bc10..6d2f1e6 100644 (file)
@@ -39,6 +39,7 @@ public:
     QList<MediaImage*> getMediaImages() const;
     void setMediaImages(QList<MediaImage*>);
     void addMediaImage(MediaImage*);
+    void clearMediaImages();
     /*void setSetup(Setup *);
     Setup* getSetup() const;*/
     void setFilePath(FilePathObject*);
index 18b915b..d12c5c1 100644 (file)
@@ -76,6 +76,7 @@ void MediaImagePathMainDialog::beginScanFilePath()
         // qDeleteAll could be used also... maybe?
         // TODO: this is not yet functional:
         foreach(MediaImageContainer* mic, files) {
+            //mic->clearMediaImages();
             /*QList<MediaImage*> mis = mic->getMediaImages();
             foreach(MediaImage* mi, mis) {
                 delete mi;
@@ -85,6 +86,9 @@ void MediaImagePathMainDialog::beginScanFilePath()
             mic = 0;
             */
         }
+        qDeleteAll(files);
+        //files.clear();
+        //qDebug() << files.count();
     }
     catch (EmuFrontException s)
     {