]> git.sesse.net Git - kdenlive/blobdiff - src/kthumb.cpp
* Make sure user cannot create transition with in point bigger than out point
[kdenlive] / src / kthumb.cpp
index b821e93fc68c306a2194beebc7bf9b56d0abc204..70864a3e133d70c4548e0d54f7a5d511e28d3508 100644 (file)
@@ -23,7 +23,6 @@
 #include <qxml.h>
 #include <QImage>
 #include <QApplication>
-#include <QCryptographicHash>
 
 #include <kio/netaccess.h>
 #include <kdebug.h>
@@ -59,7 +58,6 @@ bool MyThread::isWorking() {
 }
 
 void MyThread::run() {
-
     if (!f.open(QIODevice::WriteOnly)) {
         kDebug() << "++++++++  ERROR WRITING TO FILE: " << f.fileName() << endl;
         kDebug() << "++++++++  DISABLING AUDIO THUMBS" << endl;
@@ -126,18 +124,19 @@ void MyThread::run() {
 
 }
 
-KThumb::KThumb(ClipManager *clipManager, KUrl url, const QString &id, QObject * parent, const char *name): QObject(parent), m_clipManager(clipManager), m_url(url), m_id(id), m_producer(NULL), m_dar(1), m_mainFrame(-1) {
-    QCryptographicHash context(QCryptographicHash::Sha1);
-    context.addData((KFileItem(m_url, "text/plain", S_IFREG).timeString() + m_url.fileName()).toAscii().data());
-    m_thumbFile = KGlobal::dirs()->saveLocation("tmp" , "kdenlive") + context.result().toHex() + ".thumb";
-    //kDebug() << "thumbfile=" << m_thumbFile;
+KThumb::KThumb(ClipManager *clipManager, KUrl url, const QString &id, const QString &hash, QObject * parent, const char *name): QObject(parent), m_clipManager(clipManager), m_url(url), m_id(id), m_producer(NULL), m_dar(1), m_mainFrame(-1) {
+    m_thumbFile = clipManager->projectFolder() + "/thumbs/" + hash + ".thumb";
     connect(&audioThumbProducer, SIGNAL(audioThumbProgress(const int)), this, SLOT(slotAudioThumbProgress(const int)));
     connect(&audioThumbProducer, SIGNAL(audioThumbOver()), this, SLOT(slotAudioThumbOver()));
 
 }
 
 KThumb::~KThumb() {
-    if (audioThumbProducer.isRunning()) audioThumbProducer.exit();
+    if (audioThumbProducer.isRunning()) {
+        slotAudioThumbOver();
+        audioThumbProducer.stop_me = true;
+        audioThumbProducer.wait(300);
+    }
 }
 
 void KThumb::setProducer(Mlt::Producer *producer) {
@@ -149,13 +148,18 @@ bool KThumb::hasProducer() const {
     return m_producer != NULL;
 }
 
-void KThumb::updateClipUrl(KUrl url) {
+void KThumb::updateThumbUrl(const QString &hash) {
+    m_thumbFile = m_clipManager->projectFolder() + "/thumbs/" + hash + ".thumb";
+}
+
+void KThumb::updateClipUrl(KUrl url, const QString &hash) {
     m_url = url;
     if (m_producer) {
         char *tmp = Render::decodedString(url.path());
         m_producer->set("resource", tmp);
         delete[] tmp;
     }
+    m_thumbFile = m_clipManager->projectFolder() + "/thumbs/" + hash + ".thumb";
 }
 
 //static