From 1b39be5477c846cb3f4466d7d164144401d7f263 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Wed, 24 Oct 2012 01:13:23 +0200 Subject: [PATCH] Remember last seek position for clips in project tree --- src/clipitem.cpp | 2 +- src/docclipbase.cpp | 7 ++++--- src/docclipbase.h | 9 ++++----- src/monitor.cpp | 3 +++ 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/clipitem.cpp b/src/clipitem.cpp index 091eee6a..6553c6bd 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -1145,7 +1145,7 @@ void ClipItem::slotPrepareAudioThumb(double pixelForOneFrame, int startpixel, in int sample = (int)((frame - (int)(frame)) * 20); // AUDIO_FRAME_SIZE if (frame < 0 || sample < 0 || sample > 19) continue; - QMap frame_channel_data = baseClip()->m_audioFrameCache[(int)frame]; + QMap frame_channel_data = baseClip()->audioFrameCache[(int)frame]; for (int channel = 0; channel < channels && frame_channel_data[channel].size() > 0; channel++) { diff --git a/src/docclipbase.cpp b/src/docclipbase.cpp index d278eeca..5dd95e56 100644 --- a/src/docclipbase.cpp +++ b/src/docclipbase.cpp @@ -41,7 +41,8 @@ DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QString &id) : QObject(), - m_audioFrameCache(), + lastSeekPosition(0), + audioFrameCache(), m_refcount(0), m_baseTrackProducers(), m_videoTrackProducers(), @@ -137,7 +138,7 @@ bool DocClipBase::hasAudioThumb() const void DocClipBase::slotClearAudioCache() { - m_audioFrameCache.clear(); + audioFrameCache.clear(); m_audioThumbCreated = false; } @@ -284,7 +285,7 @@ void DocClipBase::setAudioThumbCreated(bool isDone) void DocClipBase::updateAudioThumbnail(const audioByteArray& data) { //kDebug() << "CLIPBASE RECIEDVED AUDIO DATA*********************************************"; - m_audioFrameCache = data; + audioFrameCache = data; m_audioThumbCreated = true; emit gotAudioData(); } diff --git a/src/docclipbase.h b/src/docclipbase.h index 724ca218..e6e722c2 100644 --- a/src/docclipbase.h +++ b/src/docclipbase.h @@ -165,10 +165,6 @@ Q_OBJECT public: /** Returns the thumbnail producer used by this clip */ KThumb *thumbProducer(); - /** Cache for every audio Frame with 10 Bytes */ - /** format is frame -> channel ->bytes */ - QMap > m_audioFrameCache; - /** Free cache data */ void slotClearAudioCache(); QString getClipHash() const; @@ -206,9 +202,12 @@ Q_OBJECT public: bool getAudioThumbs(); void setAnalysisData(const QString &name, const QString &data); QMap analysisData() const; + int lastSeekPosition; + /** Cache for every audio Frame with 10 Bytes */ + /** format is frame -> channel ->bytes */ + QMap > audioFrameCache; private: // Private attributes - /** The number of times this clip is used in the project - the number of references to this clip * that exist. */ uint m_refcount; diff --git a/src/monitor.cpp b/src/monitor.cpp index d7491dea..67b35e92 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -830,6 +830,7 @@ void Monitor::slotSetClipProducer(DocClipBase *clip, QPoint zone, bool forceUpda { if (render == NULL) return; if (clip == NULL && m_currentClip != NULL) { + m_currentClip->lastSeekPosition = render->seekFramePosition(); kDebug()<<"// SETTING NULL CLIP MONITOR"; m_currentClip = NULL; m_length = -1; @@ -838,7 +839,9 @@ void Monitor::slotSetClipProducer(DocClipBase *clip, QPoint zone, bool forceUpda } if (clip != m_currentClip || forceUpdate) { + if (m_currentClip) m_currentClip->lastSeekPosition = render->seekFramePosition(); m_currentClip = clip; + if (position == -1) position = clip->lastSeekPosition; if (m_currentClip) slotActivateMonitor(); updateMarkers(clip); Mlt::Producer *prod = NULL; -- 2.39.2