X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fclipmanager.cpp;h=22fee7559ab503448312ff01a5e4bc725704a000;hb=a3eee7be24126f5a3458d488f44cd61c66135e17;hp=b5932d6dddd3e0c1ea38e0020dc6d31ba9576f29;hpb=86e06b615e11677bf2b1e83d1f46754946006e41;p=kdenlive diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index b5932d6d..22fee755 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -45,12 +45,14 @@ #include #include +#include #include -ClipManager::ClipManager(KdenliveDoc *doc) : +ClipManager::ClipManager(KdenliveDoc *doc, QGLWidget *glContext) : QObject(), + m_mainGLContext(glContext), m_audioThumbsQueue(), m_doc(doc), m_abortThumb(false), @@ -165,6 +167,10 @@ void ClipManager::stopThumbs(const QString &id) void ClipManager::slotGetThumbs() { + // We are in a new thread, so we need a new OpenGL context for the remainder of the function. + QGLWidget ctx(0, m_mainGLContext); + ctx.makeCurrent(); + QMap::const_iterator i; int max; int done = 0; @@ -251,6 +257,10 @@ void ClipManager::askForAudioThumb(const QString &id) void ClipManager::slotGetAudioThumbs() { + // We are in a new thread, so we need a new OpenGL context for the remainder of the function. + QGLWidget ctx(0, m_mainGLContext); + ctx.makeCurrent(); + Mlt::Profile prof((char*) KdenliveSettings::current_profile().toUtf8().constData()); mlt_audio_format audioFormat = mlt_audio_s16; while (!m_abortAudioThumb && !m_audioThumbsQueue.isEmpty()) { @@ -403,7 +413,7 @@ QMap ClipManager::documentFolderList() const void ClipManager::addClip(DocClipBase *clip) { m_clipList.append(clip); - if (clip->clipType() != COLOR && clip->clipType() != SLIDESHOW && !clip->fileURL().isEmpty()) { + if (clip->clipType() != Color && clip->clipType() != SlideShow && !clip->fileURL().isEmpty()) { // listen for file change //kDebug() << "// LISTEN FOR: " << clip->fileURL().path(); m_fileWatcher.addFile(clip->fileURL().path()); @@ -433,7 +443,7 @@ void ClipManager::deleteClip(const QString &clipId) for (int i = 0; i < m_clipList.count(); ++i) { if (m_clipList.at(i)->getId() == clipId) { DocClipBase *clip = m_clipList.takeAt(i); - if (clip->clipType() != COLOR && clip->clipType() != SLIDESHOW && !clip->fileURL().isEmpty()) { + if (clip->clipType() != Color && clip->clipType() != SlideShow && !clip->fileURL().isEmpty()) { //if (m_clipList.at(i)->clipType() == IMAGE || m_clipList.at(i)->clipType() == AUDIO || (m_clipList.at(i)->clipType() == TEXT && !m_clipList.at(i)->fileURL().isEmpty())) { // listen for file change m_fileWatcher.removeFile(clip->fileURL().path()); @@ -573,7 +583,7 @@ void ClipManager::slotAddClipList(const KUrl::List &urls, const QMap name().startsWith("image/")) { - prod.setAttribute("type", (int) IMAGE); + prod.setAttribute("type", (int) Image); prod.setAttribute("in", 0); prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1); if (KdenliveSettings::autoimagetransparency()) prod.setAttribute("transparency", 1); @@ -596,7 +606,7 @@ void ClipManager::slotAddClipList(const KUrl::List &urls, const QMap properties, c prod.setAttribute(i.key(), i.value()); ++i; } - prod.setAttribute("type", (int) SLIDESHOW); + prod.setAttribute("type", (int) SlideShow); uint id = m_clipIdCounter++; if (!group.isEmpty()) { prod.setAttribute("groupname", group); @@ -719,7 +729,7 @@ void ClipManager::slotAddTextClipFile(const QString &titleName, int duration, co prod.setAttribute("groupname", group); prod.setAttribute("groupid", groupId); } - prod.setAttribute("type", (int) TEXT); + prod.setAttribute("type", (int) Text); prod.setAttribute("transparency", "1"); prod.setAttribute("in", "0"); prod.setAttribute("out", duration - 1); @@ -740,7 +750,7 @@ void ClipManager::slotAddTextTemplateClip(QString titleName, const KUrl &path, c prod.setAttribute("groupname", group); prod.setAttribute("groupid", groupId); } - prod.setAttribute("type", (int) TEXT); + prod.setAttribute("type", (int) Text); prod.setAttribute("transparency", "1"); prod.setAttribute("in", "0"); @@ -817,15 +827,15 @@ QDomElement ClipManager::groupsXml() const groups.appendChild(group); QList children = m_groupsList.at(i)->childItems(); for (int j = 0; j < children.count(); j++) { - if (children.at(j)->type() == AVWIDGET || children.at(j)->type() == TRANSITIONWIDGET) { + if (children.at(j)->type() == AVWidget || children.at(j)->type() == TransitionWidget) { AbstractClipItem *item = static_cast (children.at(j)); ItemInfo info = item->info(); - if (item->type() == AVWIDGET) { + if (item->type() == AVWidget) { QDomElement clip = doc.createElement("clipitem"); clip.setAttribute("track", info.track); clip.setAttribute("position", info.startPos.frames(m_doc->fps())); group.appendChild(clip); - } else if (item->type() == TRANSITIONWIDGET) { + } else if (item->type() == TransitionWidget) { QDomElement clip = doc.createElement("transitionitem"); clip.setAttribute("track", info.track); clip.setAttribute("position", info.startPos.frames(m_doc->fps()));