[SCM] kdenlive packaging branch, kubuntu_xenial_archive, updated. ubuntu/4%15.08.2-0ubuntu1-561-gb8d8ab5

Scarlett Clark sgclark-guest at moszumanska.debian.org
Thu Feb 18 19:31:23 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/kdenlive.git;a=commitdiff;h=ab8fee9

The following commit has been merged in the kubuntu_xenial_archive branch:
commit ab8fee94ae0a35f0a5e5baaf3cb60901901c440f
Author: the-me <the-me at f1c9c430-f51a-44e6-a298-6f72677f57b2>
Date:   Wed Dec 16 10:23:35 2015 +0000

    Revert -r6442
    
    
    git-svn-id: https://svn.linux-dev.org/svn/pkg/kdenlive/trunk/debian@6443 f1c9c430-f51a-44e6-a298-6f72677f57b2
---
 changelog                                  |   7 -
 patches/01-crash-when-deleting-tracks.diff | 404 -----------------------------
 patches/series                             |   1 -
 3 files changed, 412 deletions(-)

diff --git a/changelog b/changelog
index 673c54f..34621ed 100644
--- a/changelog
+++ b/changelog
@@ -1,10 +1,3 @@
-kdenlive (15.08.3-2) UNRELEASED; urgency=medium
-
-  * Add upstream patch 01-crash-when-deleting-tracks.
-    Closes: #807978
-
- -- Patrick Matthäi <pmatthaei at debian.org>  Wed, 16 Dec 2015 11:20:45 +0100
-
 kdenlive (15.08.3-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/patches/01-crash-when-deleting-tracks.diff b/patches/01-crash-when-deleting-tracks.diff
deleted file mode 100644
index 89d2159..0000000
--- a/patches/01-crash-when-deleting-tracks.diff
+++ /dev/null
@@ -1,404 +0,0 @@
-commit 0d5e32ad224d399425b098db0a27e7caa7e0f27b
-Author: Jean-Baptiste Mardelle <jb at kdenlive.org>
-Date:   Sun Dec 6 12:40:05 2015 +0100
-
-    Fix crash on delete track with grouped clips, and another track deletion crash
-    BUG: 356313
-
-diff --git a/src/doc/kdenlivedoc.cpp b/src/doc/kdenlivedoc.cpp
-index 56e9c9f..bb51d18 100644
---- a/src/doc/kdenlivedoc.cpp
-+++ b/src/doc/kdenlivedoc.cpp
-@@ -145,7 +145,6 @@ KdenliveDoc::KdenliveDoc(const QUrl &url, const QUrl &projectFolder, QUndoGroup
-     }
- 
-     *openBackup = false;
--    
-     if (url.isValid()) {
-         QFile file(url.toLocalFile());
-         if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
-diff --git a/src/project/clipmanager.cpp b/src/project/clipmanager.cpp
-index 7fd25ce..1e6e35a 100644
---- a/src/project/clipmanager.cpp
-+++ b/src/project/clipmanager.cpp
-@@ -343,6 +343,11 @@ void ClipManager::removeGroup(AbstractGroupItem *group)
-     m_groupsList.removeAll(group);
- }
- 
-+void ClipManager::resetGroups()
-+{
-+    m_groupsList.clear();
-+}
-+
- QString ClipManager::groupsXml() const
- {
-     QDomDocument doc;
-diff --git a/src/project/clipmanager.h b/src/project/clipmanager.h
-index d633864..bf9143a 100644
---- a/src/project/clipmanager.h
-+++ b/src/project/clipmanager.h
-@@ -82,6 +82,8 @@ Q_OBJECT public:
-     void clearCache();
-     AbstractGroupItem *createGroup();
-     void removeGroup(AbstractGroupItem *group);
-+    /** @brief Delete groups list, prepare for a reload. */
-+    void resetGroups();
-     QString groupsXml() const;
-     /** @brief remove a clip id from the queue list. */
-     void stopThumbs(const QString &id);
-@@ -98,8 +100,7 @@ private slots:
-     void slotAddCopiedClip(KIO::Job*, const QUrl&, const QUrl &dst);
- 
- private:   // Private attributes
--    /** the list of clips in the document */
--    /** the list of groups in the document */
-+    /** @brief the list of groups in the document */
-     QList <AbstractGroupItem *> m_groupsList;
-     QMap <QString, QString> m_folderList;
-     QList <QString> m_audioThumbsQueue;
-diff --git a/src/timeline/customtrackview.cpp b/src/timeline/customtrackview.cpp
-index 8fd4d29..9d72813 100644
---- a/src/timeline/customtrackview.cpp
-+++ b/src/timeline/customtrackview.cpp
-@@ -3140,6 +3140,30 @@ void CustomTrackView::addTrack(const TrackInfo &type, int ix)
-         ix = m_timeline->tracksCount() + 1;
-     }
- 
-+    // Prepare groups for reload
-+    QDomDocument doc;
-+    doc.setContent(m_document->groupsXml());
-+    QDomNodeList groups;
-+    if (!doc.isNull()) {
-+        groups = doc.documentElement().elementsByTagName("group");
-+        for (int nodeindex = 0; nodeindex < groups.count(); ++nodeindex) {
-+            QDomNode grp = groups.item(nodeindex);
-+            QDomNodeList nodes = grp.childNodes();
-+            for (int itemindex = 0; itemindex < nodes.count(); ++itemindex) {
-+                QDomElement elem = nodes.item(itemindex).toElement();
-+                if (!elem.hasAttribute("track")) continue;
-+                int track = elem.attribute("track").toInt();
-+                if (track <= ix) {
-+                    // No change
-+                    continue;
-+                }
-+                else {
-+                    elem.setAttribute("track", track + 1);
-+                }
-+            }
-+        }
-+    }
-+
-     // insert track in MLT's playlist
-     transitionInfos = m_document->renderer()->mltInsertTrack(ix,  type.trackName, type.type == VideoTrack);
-     Mlt::Tractor *tractor = m_document->renderer()->lockService();
-@@ -3156,6 +3180,7 @@ void CustomTrackView::addTrack(const TrackInfo &type, int ix)
-     m_document->renderer()->unlockService(tractor);
-     // Reload timeline and m_tracks structure from MLT's playlist
-     reloadTimeline();
-+    loadGroups(groups);
- }
- 
- void CustomTrackView::checkCompositeTransitions(Mlt::Tractor *tractor)
-@@ -3235,67 +3260,41 @@ void CustomTrackView::removeTrack(int ix)
-             field->disconnect_service(*mixTr.data());
-         }
-     }
-+    // Prepare groups for reload
-+    QDomDocument doc;
-+    doc.setContent(m_document->groupsXml());
-+    QDomNodeList groups;
-+    if (!doc.isNull()) {
-+        groups = doc.documentElement().elementsByTagName("group");
-+        for (int nodeindex = 0; nodeindex < groups.count(); ++nodeindex) {
-+            QDomNode grp = groups.item(nodeindex);
-+            QDomNodeList nodes = grp.childNodes();
-+            for (int itemindex = 0; itemindex < nodes.count(); ++itemindex) {
-+                QDomElement elem = nodes.item(itemindex).toElement();
-+                if (!elem.hasAttribute("track")) continue;
-+                int track = elem.attribute("track").toInt();
-+                if (track < ix) {
-+                    // No change
-+                    continue;
-+                }
-+                else if (track > ix) {
-+                    elem.setAttribute("track", track - 1);
-+                }
-+                else {
-+                    // track == ix
-+                    // A grouped item was on deleted track, remove it from group
-+                    elem.setAttribute("track", -1);
-+                }
-+            }
-+        }
-+    }
-+
-     // Delete track in MLT playlist
-     tractor->remove_track(ix);
-     checkCompositeTransitions(tractor);
-     m_document->renderer()->unlockService(tractor);
-     reloadTimeline();
--    /*
--    double startY = ix * (m_tracksHeight + 1) + m_tracksHeight / 2;
--    QRectF r(0, startY, sceneRect().width(), sceneRect().height() - startY);
--    QList<QGraphicsItem *> selection = m_scene->items(r);
--    m_selectionMutex.lock();
--    m_selectionGroup = new AbstractGroupItem(m_document->fps());
--    scene()->addItem(m_selectionGroup);
--    for (int i = 0; i < selection.count(); ++i) {
--        if ((selection.at(i) && !selection.at(i)->parentItem() && selection.at(i)->isEnabled()) && (selection.at(i)->type() == AVWidget || selection.at(i)->type() == TransitionWidget || selection.at(i)->type() == GroupWidget)) {
--            m_selectionGroup->addItem(selection.at(i));
--        }
--    }
--    // Move graphic items
--    qreal ydiff = 0 - (int) m_tracksHeight;
--    m_selectionGroup->setTransform(QTransform::fromTranslate(0, ydiff), true);
--    Mlt::Tractor *tractor = m_document->renderer()->lockService();
--
--    // adjust track number
--    QList<QGraphicsItem *> children = m_selectionGroup->childItems();
--    ////qDebug() << "// FOUND CLIPS TO MOVE: " << children.count();
--    for (int i = 0; i < children.count(); ++i) {
--        if (children.at(i)->type() == GroupWidget) {
--            AbstractGroupItem *grp = static_cast<AbstractGroupItem*>(children.at(i));
--            children << grp->childItems();
--            continue;
--        }
--        if (children.at(i)->type() == AVWidget) {
--            ClipItem *clip = static_cast <ClipItem *>(children.at(i));
--            clip->updateItem();
--        } else if (children.at(i)->type() == TransitionWidget) {
--            Transition *tr = static_cast <Transition *>(children.at(i));
--            tr->updateItem();
--            int track = tr->transitionEndTrack();
--            if (track >= ix) {
--                ItemInfo clipinfo = tr->info();
--                tr->updateTransitionEndTrack(getPreviousVideoTrack(clipinfo.track));
--            }
--        }
--    }
--    m_selectionMutex.unlock();
--    resetSelectionGroup(false);
--    m_document->renderer()->unlockService(tractor);
--
--    int maxHeight = m_tracksHeight * m_timeline->tracksCount() * matrix().m22();
--    for (int i = 0; i < m_guides.count(); ++i) {
--        m_guides.at(i)->setLine(0, 0, 0, maxHeight - 1);
--    }
--    m_cursorLine->setLine(0, 0, 0, maxHeight - 1);
--    setSceneRect(0, 0, sceneRect().width(), m_tracksHeight * m_timeline->tracksCount());
--
--    m_selectedTrack = qMin(m_selectedTrack, m_timeline->tracksCount() - 1);
--    viewport()->update();
--
--    updateTrackNames(ix, false);
--    //QTimer::singleShot(500, this, SIGNAL(()));
--    */
-+    loadGroups(groups);
- }
- 
- void CustomTrackView::configTracks(const QList < TrackInfo > &trackInfos)
-@@ -6687,6 +6686,7 @@ void CustomTrackView::getTransitionAvailableSpace(AbstractClipItem *item, GenTim
- 
- void CustomTrackView::loadGroups(const QDomNodeList &groups)
- {
-+    m_document->clipManager()->resetGroups();
-     for (int i = 0; i < groups.count(); ++i) {
-         QDomNodeList children = groups.at(i).childNodes();
-         scene()->clearSelection();
-@@ -6695,6 +6695,8 @@ void CustomTrackView::loadGroups(const QDomNodeList &groups)
-             QDomElement elem = children.item(nodeindex).toElement();
-             int pos = elem.attribute("position").toInt();
-             int track = elem.attribute("track").toInt();
-+            // Ignore items removed after track deletion
-+            if (track == -1) continue;
-             if (elem.tagName() == "clipitem") {
-                 ClipItem *clip = getClipItemAtStart(GenTime(pos, m_document->fps()), track);
-                 if (clip) list.append(clip);//clip->setSelected(true);
-diff --git a/src/timeline/headertrack.cpp b/src/timeline/headertrack.cpp
-index 14f1246..42342fa 100644
---- a/src/timeline/headertrack.cpp
-+++ b/src/timeline/headertrack.cpp
-@@ -36,8 +36,8 @@
- #include <QDomDocument>
- #include <QMimeData>
- 
--HeaderTrack::HeaderTrack(TrackInfo info, const QList <QAction *> &actions, Track *parent) :
--        QWidget(0),
-+HeaderTrack::HeaderTrack(TrackInfo info, const QList <QAction *> &actions, Track *parent, QWidget *parentWidget) :
-+        QWidget(parentWidget),
-         m_type(info.type),
-         m_parentTrack(parent),
-         m_isSelected(false),
-@@ -107,7 +107,7 @@ HeaderTrack::HeaderTrack(TrackInfo info, const QList <QAction *> &actions, Track
- 
- HeaderTrack::~HeaderTrack()
- {
--    //qDebug()<<" - --DEL: "<<m_name;
-+    //qDebug()<<" - --DEL TK HEAD: "<<m_name;
- }
- 
- bool HeaderTrack::eventFilter(QObject *obj, QEvent *event)
-diff --git a/src/timeline/headertrack.h b/src/timeline/headertrack.h
-index d6f0313..cb27283 100644
---- a/src/timeline/headertrack.h
-+++ b/src/timeline/headertrack.h
-@@ -34,7 +34,7 @@ class HeaderTrack : public QWidget, public Ui::TrackHeader_UI
-     Q_OBJECT
- 
- public:
--    HeaderTrack(TrackInfo info, const QList <QAction *>& actions, Track *parent);
-+    HeaderTrack(TrackInfo info, const QList <QAction *>& actions, Track *parent, QWidget *parentWidget);
-     virtual ~HeaderTrack();
-     void setTrackHeight(int height);
-     void setLock(bool lock);
-diff --git a/src/timeline/timeline.cpp b/src/timeline/timeline.cpp
-index 8c53a10..76764f4 100644
---- a/src/timeline/timeline.cpp
-+++ b/src/timeline/timeline.cpp
-@@ -225,13 +225,7 @@ int Timeline::getTracks() {
-     QVBoxLayout *headerLayout = qobject_cast< QVBoxLayout* >(headers_container->layout());
-     QLayoutItem *child;
-     while ((child = headerLayout->takeAt(0)) != 0) {
--        QWidget *wid = child->widget();
-         delete child;
--        if (wid) {
--            // We need to change parent or the headers are still here when processing getTransitions()
--            wid->setParent(0);
--            wid->deleteLater();
--        }
-     }
-     int clipsCount = 0;
-     for (int i = 0; i < m_tractor->count(); ++i) {
-@@ -250,6 +244,7 @@ int Timeline::getTracks() {
-         QScopedPointer<Mlt::Producer> track(m_tractor->track(i));
-         QString playlist_name = track->get("id");
-         if (playlist_name == "playlistmain") continue;
-+        bool isBackgroundBlackTrack = playlist_name == "black_track";
-         // check track effects
-         Mlt::Playlist playlist(*track);
-         int trackduration;
-@@ -260,16 +255,16 @@ int Timeline::getTracks() {
-         frame->setFrameStyle(QFrame::HLine);
-         frame->setFixedHeight(1);
-         headerLayout->insertWidget(0, frame);
--        Track *tk = new Track(i, m_trackActions, playlist, audio == 1 ? AudioTrack : VideoTrack, m_doc->fps());
-+        Track *tk = new Track(i, m_trackActions, playlist, audio == 1 ? AudioTrack : VideoTrack, m_doc->fps(), this);
-         m_tracks.append(tk);
--        if (audio == 0) {
-+        if (audio == 0 && !isBackgroundBlackTrack) {
-             // Check if we have a composite transition for this track
-             QScopedPointer<Mlt::Transition> transition(transitionHandler->getTransition(KdenliveSettings::gpu_accel() ? "movit.overlay" : "frei0r.cairoblend", i, -1, true));
-             if (!transition) {
-                 tk->trackHeader->disableComposite();
-             }
-         }
--        if (playlist_name != "black_track") {
-+        if (!isBackgroundBlackTrack) {
-             tk->trackHeader->setTrackHeight(height);
-             int currentWidth = tk->trackHeader->minimumWidth();
-             if (currentWidth > headerWidth) headerWidth = currentWidth;
-@@ -284,13 +279,13 @@ int Timeline::getTracks() {
-             connect(tk->trackHeader, SIGNAL(renameTrack(int,QString)), this, SLOT(slotRenameTrack(int,QString)));
-             connect(tk->trackHeader, SIGNAL(configTrack()), this, SIGNAL(configTrack()));
-             connect(tk->trackHeader, SIGNAL(addTrackEffect(QDomElement,int)), m_trackview, SLOT(slotAddTrackEffect(QDomElement,int)));
-+            if (playlist.filter_count()) {
-+                getEffects(playlist, NULL, i);
-+                slotUpdateTrackEffectState(i);
-+            }
-+            connect(tk, &Track::newTrackDuration, this, &Timeline::checkDuration);
-+            connect(tk, SIGNAL(storeSlowMotion(QString,Mlt::Producer *)), m_doc->renderer(), SLOT(storeSlowmotionProducer(QString,Mlt::Producer *)));
-         }
--        if (playlist.filter_count()) {
--            getEffects(playlist, NULL, i);
--            slotUpdateTrackEffectState(i);
--        }
--        connect(tk, &Track::newTrackDuration, this, &Timeline::checkDuration);
--	connect(tk, SIGNAL(storeSlowMotion(QString,Mlt::Producer *)), m_doc->renderer(), SLOT(storeSlowmotionProducer(QString,Mlt::Producer *)));
-     }
-     headers_container->setFixedWidth(headerWidth);
-     updatePalette();
-@@ -697,7 +692,7 @@ void Timeline::switchTrackVideo(int ix, bool hide)
- 
- void Timeline::slotSwitchTrackComposite(int trackIndex, bool enable)
- {
--    if (trackIndex < 0 || trackIndex > m_tracks.count()) return;
-+    if (trackIndex < 1 || trackIndex > m_tracks.count()) return;
-     QScopedPointer<Mlt::Transition> transition(transitionHandler->getTransition(KdenliveSettings::gpu_accel() ? "movit.overlay" : "frei0r.cairoblend", trackIndex, -1, true));
-     if (transition) {
-         transition->set("disable", enable);
-@@ -1138,6 +1133,7 @@ void Timeline::slotRenameTrack(int ix, const QString &name)
- 
- void Timeline::renameTrack(int ix, const QString &name)
- {
-+    if (ix < 1) return;
-     Track *tk = track(ix);
-     if (!tk) return;
-     tk->setProperty("kdenlive:track_name", name);
-@@ -1165,6 +1161,7 @@ void Timeline::slotShowTrackEffects(int ix)
- 
- void Timeline::slotUpdateTrackEffectState(int ix)
- {
-+    if (ix < 1) return;
-     Track *tk = track(ix);
-     if (!tk) return;
-     tk->trackHeader->updateEffectLabel(tk->effectsList.effectNames());
-diff --git a/src/timeline/track.cpp b/src/timeline/track.cpp
-index c1e21ed..93851e3 100644
---- a/src/timeline/track.cpp
-+++ b/src/timeline/track.cpp
-@@ -28,18 +28,24 @@
- #include <QDebug>
- #include <math.h>
- 
--Track::Track(int index, const QList<QAction *> &actions, Mlt::Playlist &playlist, TrackType type, qreal fps) :
-+Track::Track(int index, const QList<QAction *> &actions, Mlt::Playlist &playlist, TrackType type, qreal fps, QWidget *parent) :
-     effectsList(EffectsList(true)),
-     type(type),
-+    trackHeader(NULL),
-     m_index(index),
-     m_playlist(playlist),
-     m_fps(fps)
- {
--    trackHeader = new HeaderTrack(info(), actions, this);
-+    QString playlist_name = playlist.get("id");
-+    if (playlist_name != "black_track") {
-+        trackHeader = new HeaderTrack(info(), actions, this, parent);
-+    }
- }
- 
- Track::~Track()
- {
-+    //qDebug()<<"// DELETING TRAK: "<<m_playlist.get("id");
-+    trackHeader->deleteLater();
- }
- 
- // members access
-@@ -267,6 +273,7 @@ bool Track::needsDuplicate(const QString &service) const
- 
- void Track::lockTrack(bool locked)
- {
-+    if (!trackHeader) return;
-     setProperty("kdenlive:locked_track", locked ? 1 : 0);
-     trackHeader->setLock(locked);
- }
-@@ -531,6 +538,7 @@ TrackInfo Track::info()
- 
- void Track::setInfo(TrackInfo info)
- {
-+    if (!trackHeader) return;
-     m_playlist.set("kdenlive:track_name", info.trackName.toUtf8().constData());
-     m_playlist.set("kdenlive:locked_track", info.isLocked ? 1 : 0);
-     m_playlist.set("kdenlive:composite", info.composite ? 1 : 0);
-diff --git a/src/timeline/track.h b/src/timeline/track.h
-index 547229a..8dbe707 100644
---- a/src/timeline/track.h
-+++ b/src/timeline/track.h
-@@ -53,7 +53,7 @@ public:
-     /** @brief Track constructor
-      * @param playlist is the MLT object used for monitor/render
-      * @param fps is the read speed (frames per seconds) */
--    explicit Track(int index, const QList<QAction *> &actions, Mlt::Playlist &playlist, TrackType type, qreal fps);
-+    explicit Track(int index, const QList<QAction *> &actions, Mlt::Playlist &playlist, TrackType type, qreal fps, QWidget *parent = 0);
-     ~Track();
- 
-     /// Property access function
diff --git a/patches/series b/patches/series
deleted file mode 100644
index d45ae89..0000000
--- a/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-01-crash-when-deleting-tracks.diff

-- 
kdenlive packaging



More information about the pkg-kde-commits mailing list