From: <j-...@us...> - 2011-02-19 23:28:22
|
Revision: 5434 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5434&view=rev Author: j-b-m Date: 2011-02-19 23:28:16 +0000 (Sat, 19 Feb 2011) Log Message: ----------- Fix changing duration of image, color and text clips Modified Paths: -------------- trunk/kdenlive/src/mainwindow.cpp trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/mainwindow.cpp =================================================================== --- trunk/kdenlive/src/mainwindow.cpp 2011-02-19 23:23:02 UTC (rev 5433) +++ trunk/kdenlive/src/mainwindow.cpp 2011-02-19 23:28:16 UTC (rev 5434) @@ -3178,6 +3178,10 @@ if (dia_ui->outPoint() != clip->duration().frames(m_activeDocument->fps()) - 1) { // duration changed, we need to update duration newprops.insert("out", QString::number(dia_ui->outPoint())); + int currentLength = QString(clip->producerProperty("length")).toInt(); + if (currentLength <= dia_ui->outPoint()) + newprops.insert("length", QString::number(dia_ui->outPoint() + 1)); + else newprops.insert("length", clip->producerProperty("length")); } if (!path.isEmpty()) { // we are editing an external file, asked if we want to detach from that file or save the result to that title file. Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2011-02-19 23:23:02 UTC (rev 5433) +++ trunk/kdenlive/src/renderer.cpp 2011-02-19 23:28:16 UTC (rev 5434) @@ -631,12 +631,14 @@ } int clipOut = 0; + int duration = 0; if (xml.hasAttribute("out")) clipOut = xml.attribute("out").toInt(); // setup length here as otherwise default length (currently 15000 frames in MLT) will be taken even if outpoint is larger if (type == COLOR || type == TEXT || type == IMAGE || type == SLIDESHOW) { int length; if (xml.hasAttribute("length")) { + if (clipOut > 0) duration = clipOut + 1; length = xml.attribute("length").toInt(); clipOut = length - 1; } @@ -664,8 +666,8 @@ int frameNumber = xml.attribute("thumbnail", "0").toInt(); if (frameNumber != 0) producer->seek(frameNumber); - filePropertyMap["duration"] = QString::number(producer->get_playtime()); - //kDebug() << "/////// PRODUCER: " << url.path() << " IS: " << producer.get_playtime(); + filePropertyMap["duration"] = QString::number(duration > 0 ? duration : producer->get_playtime()); + //kDebug() << "/////// PRODUCER: " << url.path() << " IS: " << producer->get_playtime(); Mlt::Frame *frame = producer->get_frame(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |