]> git.sesse.net Git - kdenlive/commitdiff
Fix another possible memleak
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 18 Oct 2011 16:37:47 +0000 (16:37 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 18 Oct 2011 16:37:47 +0000 (16:37 +0000)
svn path=/trunk/kdenlive/; revision=5970

src/docclipbase.cpp

index ef78b24207ef0e5176defd4a4a684f312d7fedd4..171392ddff4db9d22cb753cc8b9338a6b4feb587 100644 (file)
@@ -443,6 +443,20 @@ void DocClipBase::deleteProducers()
 
 void DocClipBase::cleanupProducers()
 {
+    /*
+    int ct = 0;
+    kDebug()<<"----------------------------------------------------------------------------------";
+    for (int i = 0; i < m_toDeleteProducers.count(); i++) {
+        if (m_toDeleteProducers.at(i) != NULL) {
+            Mlt::Properties props(m_toDeleteProducers.at(i)->get_properties());
+            if (props.ref_count() > 2) {
+                kDebug()<<"PRODUCER: "<<i<<", COUNTS: "<<props.ref_count();
+                //exit(1);
+            }
+            ct++;
+        }
+    }*/
+
     qDeleteAll(m_toDeleteProducers);
     m_toDeleteProducers.clear();
     m_replaceMutex.unlock();
@@ -496,12 +510,14 @@ void DocClipBase::setProducer(Mlt::Producer *producer, bool reset, bool readProp
                 m_audioTrackProducers[pos] = producer;
                 updated = true;
             }
+            else delete producer;
             return;
         } else if (id.endsWith("video")) {
             if (m_videoOnlyProducer == NULL) {
                 m_videoOnlyProducer = producer;
                 updated = true;
             }
+            else delete producer;
             return;
         }
         int pos = id.toInt();
@@ -514,6 +530,7 @@ void DocClipBase::setProducer(Mlt::Producer *producer, bool reset, bool readProp
             m_baseTrackProducers[pos] = producer;
             updated = true;
         }
+        else delete producer;
     } else {
         if (m_baseTrackProducers.isEmpty()) {
             m_baseTrackProducers.append(producer);
@@ -523,6 +540,7 @@ void DocClipBase::setProducer(Mlt::Producer *producer, bool reset, bool readProp
             m_baseTrackProducers[0] = producer;
             updated = true;
         }
+        else delete producer;
     }
     if (updated && readPropertiesFromProducer && (m_clipType != COLOR && m_clipType != IMAGE && m_clipType != TEXT))
         setDuration(GenTime(producer->get_length(), KdenliveSettings::project_fps()));