From 6488d3981af08eec5cc98423eb82e38cec93dfdd Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Fri, 9 Jan 2009 15:10:58 +0000 Subject: [PATCH] * Remove broken transition (where in > out) on project opening svn path=/branches/KDE4/; revision=2885 --- src/kdenlivedoc.cpp | 8 +++++--- src/kdenlivedoc.h | 1 + src/trackview.cpp | 22 ++++++++++++++++------ 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index f1d64951..6d6baa38 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -187,10 +187,7 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup if (m_fps == 30000.0 / 1001.0) m_timecode.setFormat(30, true); else m_timecode.setFormat((int) m_fps); - m_render->setSceneList(m_document.toString(), m_startPos); //kDebug() << "// SETTING SCENE LIST:\n\n" << m_document.toString(); - checkProjectClips(); - connect(m_autoSaveTimer, SIGNAL(timeout()), this, SLOT(slotAutoSave())); } @@ -205,6 +202,11 @@ KdenliveDoc::~KdenliveDoc() { } } +void KdenliveDoc::setSceneList() { + m_render->setSceneList(m_document.toString(), m_startPos); + checkProjectClips(); +} + QDomDocument KdenliveDoc::createEmptyDocument(const int videotracks, const int audiotracks) { // Creating new document QDomDocument doc; diff --git a/src/kdenlivedoc.h b/src/kdenlivedoc.h index 2368ca63..e5bfbbdc 100644 --- a/src/kdenlivedoc.h +++ b/src/kdenlivedoc.h @@ -120,6 +120,7 @@ Q_OBJECT public: QString getLadspaFile() const; void setZone(int start, int end); QPoint zone() const; + void setSceneList(); private: KUrl m_url; diff --git a/src/trackview.cpp b/src/trackview.cpp index bdc09307..d5eec159 100644 --- a/src/trackview.cpp +++ b/src/trackview.cpp @@ -78,7 +78,7 @@ TrackView::TrackView(KdenliveDoc *doc, QWidget *parent) connect(m_trackview, SIGNAL(trackHeightChanged()), this, SLOT(slotRebuildTrackHeaders())); parseDocument(m_doc->toXml()); - + m_doc->setSceneList(); connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int))); connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int))); connect(m_trackview, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int))); @@ -127,6 +127,7 @@ void TrackView::parseDocument(QDomDocument doc) { }*/ // parse project tracks + QDomElement tractor = doc.elementsByTagName("tractor").item(0).toElement(); QDomNodeList tracks = doc.elementsByTagName("track"); QDomNodeList playlists = doc.elementsByTagName("playlist"); int duration = 300; @@ -176,9 +177,9 @@ void TrackView::parseDocument(QDomDocument doc) { // parse transitions QDomNodeList transitions = doc.elementsByTagName("transition"); - int projectTransitions = transitions.count(); + //kDebug() << "//////////// TIMELINE FOUND: " << projectTransitions << " transitions"; - for (int i = 0; i < projectTransitions; i++) { + for (int i = 0; i < transitions.count(); i++) { e = transitions.item(i).toElement(); QDomNodeList transitionparams = e.childNodes(); bool transitionAdd = true; @@ -269,9 +270,18 @@ void TrackView::parseDocument(QDomDocument doc) { transitionInfo.endPos = GenTime(e.attribute("out").toInt() + 1, m_doc->fps()); transitionInfo.track = m_projectTracks - 1 - b_track; //kDebug() << "/////////////// +++++++++++ ADDING TRANSITION ON TRACK: " << b_track << ", TOTAL TRKA: " << m_projectTracks; - Transition *tr = new Transition(transitionInfo, a_track, m_doc->fps(), base, isAutomatic); - if (forceTrack) tr->setForcedTrack(true, a_track); - m_scene->addItem(tr); + if (transitionInfo.startPos >= transitionInfo.endPos) { + // invalid transition, remove it. + m_documentErrors.append(i18n("Removed invalid transition: %1\n", e.attribute("id"))); + kDebug()<<"///// REMOVED INVALID TRANSITION: "<fps(), base, isAutomatic); + if (forceTrack) tr->setForcedTrack(true, a_track); + m_scene->addItem(tr); + } } } -- 2.39.2