From 7b2eea853eea8253352d91c07e4a12523f78fd55 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Fri, 2 Oct 2009 12:06:07 +0000 Subject: [PATCH] Another fix in clip resize svn path=/trunk/kdenlive/; revision=3979 --- src/customtrackview.cpp | 8 +++++--- src/renderer.cpp | 10 +++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 805ab3eb..51887871 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -4507,13 +4507,15 @@ void CustomTrackView::setOutPoint() ItemInfo startInfo = clip->info(); ItemInfo endInfo = clip->info(); endInfo.endPos = GenTime(m_cursorPos, m_document->fps()); - if (endInfo.endPos <= startInfo.startPos || endInfo.endPos > startInfo.startPos + clip->maxDuration() - startInfo.cropStart) { + CLIPTYPE type = (CLIPTYPE) static_cast (clip)->clipType(); + if (endInfo.endPos <= startInfo.startPos || (type != IMAGE && type != COLOR && type != TEXT && endInfo.endPos > startInfo.startPos + clip->maxDuration() - startInfo.cropStart)) { // Check for invalid resize emit displayMessage(i18n("Invalid action"), ErrorMessage); return; } else if (endInfo.endPos > startInfo.endPos) { - int length = m_document->renderer()->mltGetSpaceLength(endInfo.endPos, m_document->tracksCount() - startInfo.track, false); - if ((clip->type() == TRANSITIONWIDGET && itemCollision(clip, endInfo) == true) || (clip->type() == AVWIDGET && length < (endInfo.endPos - startInfo.endPos).frames(m_document->fps()))) { + int length = m_document->renderer()->mltGetSpaceLength(startInfo.endPos, m_document->tracksCount() - startInfo.track, false); + if ((clip->type() == TRANSITIONWIDGET && itemCollision(clip, endInfo) == true) || (clip->type() == AVWIDGET && length != -1 && length < (endInfo.endPos - startInfo.endPos).frames(m_document->fps()))) { + kDebug()<<" RESIZE ERROR, BLNK: "<fps()); emit displayMessage(i18n("Invalid action"), ErrorMessage); return; } diff --git a/src/renderer.cpp b/src/renderer.cpp index 27f84e5a..93d2a2b8 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -1786,12 +1786,12 @@ int Render::mltGetSpaceLength(const GenTime pos, int track, bool fromBlankStart) { if (!m_mltProducer) { kDebug() << "PLAYLIST NOT INITIALISED //////"; - return -1; + return 0; } Mlt::Producer parentProd(m_mltProducer->parent()); if (parentProd.get_producer() == NULL) { kDebug() << "PLAYLIST BROKEN, CANNOT INSERT CLIP //////"; - return -1; + return 0; } Mlt::Service service(parentProd.get_service()); @@ -1801,7 +1801,11 @@ int Render::mltGetSpaceLength(const GenTime pos, int track, bool fromBlankStart) Mlt::Producer trackProducer(tractor.track(track)); Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service()); int clipIndex = trackPlaylist.get_clip_index_at(insertPos); - if (!trackPlaylist.is_blank(clipIndex)) return -1; + if (clipIndex == trackPlaylist.count()) { + // We are after the end of the playlist + return -1; + } + if (!trackPlaylist.is_blank(clipIndex)) return 0; if (fromBlankStart) return trackPlaylist.clip_length(clipIndex); return trackPlaylist.clip_length(clipIndex) + trackPlaylist.clip_start(clipIndex) - insertPos; } -- 2.39.5