]> git.sesse.net Git - kdenlive/blobdiff - src/clipmanager.cpp
Fix a couple of compile warnings because of unused and uninitialized variables.
[kdenlive] / src / clipmanager.cpp
index c81526904d23fb2134ada69c7cb8b22d5885f8ec..79937949469b4c89cd5ee6425414e897ffade440 100644 (file)
@@ -52,6 +52,10 @@ ClipManager::ClipManager(KdenliveDoc *doc) :
     connect(&m_fileWatcher, SIGNAL(deleted(const QString &)), this, SLOT(slotClipMissing(const QString &)));
     connect(&m_fileWatcher, SIGNAL(created(const QString &)), this, SLOT(slotClipAvailable(const QString &)));
     connect(&m_modifiedTimer, SIGNAL(timeout()), this, SLOT(slotProcessModifiedClips()));
+
+#if KDE_IS_VERSION(4,5,0)
+    pixmapCache = new KImageCache("kdenlive-thumbs", 1000000);
+#endif
 }
 
 ClipManager::~ClipManager()
@@ -60,6 +64,9 @@ ClipManager::~ClipManager()
     m_generatingAudioId.clear();
     qDeleteAll(m_clipList);
     m_clipList.clear();
+#if KDE_IS_VERSION(4,5,0)
+    delete pixmapCache;
+#endif
 }
 
 void ClipManager::clear()
@@ -71,6 +78,9 @@ void ClipManager::clear()
     m_clipList.clear();
     m_clipIdCounter = 1;
     m_folderIdCounter = 1;
+#if KDE_IS_VERSION(4,5,0)
+    pixmapCache->clear();
+#endif
 }
 
 void ClipManager::checkAudioThumbs()
@@ -215,10 +225,12 @@ const QList <DocClipBase *> ClipManager::getClipByResource(QString resource)
 {
     QList <DocClipBase *> list;
     QString clipResource;
+    QString proxyResource;
     for (int i = 0; i < m_clipList.count(); i++) {
         clipResource = m_clipList.at(i)->getProperty("resource");
+        proxyResource = m_clipList.at(i)->getProperty("proxy");
         if (clipResource.isEmpty()) clipResource = m_clipList.at(i)->getProperty("colour");
-        if (clipResource == resource) {
+        if (clipResource == resource || proxyResource == resource) {
             list.append(m_clipList.at(i));
         }
     }
@@ -233,24 +245,23 @@ void ClipManager::clearUnusedProducers()
     }
 }
 
-void ClipManager::resetProducersList(const QList <Mlt::Producer *> prods)
+void ClipManager::resetProducersList(const QList <Mlt::Producer *> prods, bool displayRatioChanged, bool fpsChanged)
 {
     for (int i = 0; i < m_clipList.count(); i++) {
-        if (m_clipList.at(i)->numReferences() > 0) {
-            m_clipList.at(i)->clearProducers();
+        if (m_clipList.at(i)->numReferences() > 0 || displayRatioChanged || fpsChanged) {
+            m_clipList.at(i)->deleteProducers(true);
         }
     }
     QString id;
     for (int i = 0; i < prods.count(); i++) {
         id = prods.at(i)->get("id");
-        kDebug() << "// // // REPLACE CLIP: " << id;
         if (id.contains('_')) id = id.section('_', 0, 0);
         DocClipBase *clip = getClipById(id);
         if (clip) {
-            clip->setProducer(prods.at(i));
+            clip->setProducer(prods.at(i), false, true);
         }
     }
-    emit checkAllClips();
+    emit checkAllClips(displayRatioChanged, fpsChanged);
 }
 
 void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, const QString &groupId)