]> git.sesse.net Git - kdenlive/commitdiff
avoid a crash when dealing with placeholder clips:
authorAlberto Villa <avilla@FreeBSD.org>
Mon, 11 May 2009 11:23:41 +0000 (11:23 +0000)
committerAlberto Villa <avilla@FreeBSD.org>
Mon, 11 May 2009 11:23:41 +0000 (11:23 +0000)
http://www.kdenlive.org/mantis/view.php?id=755

svn path=/trunk/kdenlive/; revision=3372

src/docclipbase.cpp

index 4c6ccad4eaa3370b2a8aae52294e5d43be37af38..b64517df6496cdd18477906d33089344e4c3c6eb 100644 (file)
@@ -29,6 +29,7 @@
 #include "kthumb.h"
 #include "clipmanager.h"
 
+#include <KIO/NetAccess>
 #include <KDebug>
 
 #include <QCryptographicHash>
@@ -515,10 +516,13 @@ Mlt::Producer *DocClipBase::producer(int track)
             if (m_baseTrackProducers.at(i) != NULL) break;
 
         if (i >= m_baseTrackProducers.count()) return NULL;
-        m_baseTrackProducers[track] = new Mlt::Producer(*m_baseTrackProducers.at(i)->profile(), m_baseTrackProducers.at(i)->get("resource"));
 
-        // special case for placeholder clips
-        if (m_baseTrackProducers[track] == NULL) return NULL;
+        if (KIO::NetAccess::exists(KUrl(m_baseTrackProducers.at(i)->get("resource")), KIO::NetAccess::SourceSide, 0))
+            m_baseTrackProducers[track] = new Mlt::Producer(*m_baseTrackProducers.at(i)->profile(), m_baseTrackProducers.at(i)->get("resource"));
+        else { // special case for placeholder clips
+            m_baseTrackProducers[track] = NULL;
+            return NULL;
+        }
 
         if (m_properties.contains("force_aspect_ratio")) m_baseTrackProducers[track]->set("force_aspect_ratio", m_properties.value("force_aspect_ratio").toDouble());
         if (m_properties.contains("threads")) m_baseTrackProducers[track]->set("threads", m_properties.value("threads").toInt());