From: Till Theato Date: Wed, 1 Sep 2010 15:05:51 +0000 (+0000) Subject: Fix frame size changed in pan & zoom effect when changing clip duration X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=00bcfb5fec4b182f2edf81fbb24b23cffc81a513;p=kdenlive Fix frame size changed in pan & zoom effect when changing clip duration svn path=/trunk/kdenlive/; revision=4803 --- diff --git a/src/clipitem.cpp b/src/clipitem.cpp index db0f69fa..561ab7d0 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -1210,7 +1210,7 @@ void ClipItem::resizeEnd(int posx) } -bool ClipItem::checkEffectsKeyframesPos(const int previous, const int current, bool fromStart) +bool ClipItem::checkEffectsKeyframesPos(const int previous, const int current, bool fromStart, int renderWidth, int renderHeight) { bool effModified = false; for (int i = 0; i < m_effectList.count(); i++) { @@ -1253,9 +1253,7 @@ bool ClipItem::checkEffectsKeyframesPos(const int previous, const int current, b e.setAttribute("keyframes", newkfr); } } else if (e.attribute("type") == "geometry" && !e.hasAttribute("fixed")) { - char *tmp = (char *) qstrdup(e.attribute("value").toUtf8().data()); - Mlt::Geometry geometry(tmp, cropDuration().frames(fps())); - delete[] tmp; + Mlt::Geometry geometry(e.attribute("value").toUtf8().data(), cropDuration().frames(fps()), renderWidth, renderHeight); Mlt::GeometryItem item; while (!geometry.next_key(&item, cropDuration().frames(fps()))) { diff --git a/src/clipitem.h b/src/clipitem.h index 07c66988..8e474f38 100644 --- a/src/clipitem.h +++ b/src/clipitem.h @@ -156,7 +156,7 @@ public: * @param current New crop value * @param fromStart true = crop from start, false = crop from end * @return true if anything was modified */ - bool checkEffectsKeyframesPos(const int previous, const int current, bool fromStart); + bool checkEffectsKeyframesPos(const int previous, const int current, bool fromStart, int renderWidth = 0, int renderHeight = 0); void insertKeyframe(QDomElement effect, int pos, int val); void movedKeyframe(QDomElement effect, int oldpos, int newpos, double value); void updateKeyframes(QDomElement effect); diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 28f20905..3a4d07cf 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -4410,7 +4410,7 @@ void CustomTrackView::prepareResizeClipStart(AbstractClipItem* item, ItemInfo ol indexes.append(panZoomPos); } - if (clip->checkEffectsKeyframesPos(oldInfo.cropStart.frames(m_document->fps()), clip->cropStart().frames(m_document->fps()), true)) { + if (clip->checkEffectsKeyframesPos(oldInfo.cropStart.frames(m_document->fps()), clip->cropStart().frames(m_document->fps()), true, m_document->width(), m_document->height())) { // Keyframes were modified, updateClip QDomNodeList effs = doc.elementsByTagName("effect"); // Hack: