From 451be079ef019bdc4a2ad21462c456ab7c7d51c8 Mon Sep 17 00:00:00 2001 From: Hugo Beauzee-Luyssen Date: Thu, 28 May 2009 17:16:29 +0200 Subject: [PATCH] Fixed bug when using slider without anything loaded Removed debug --- src/Workflow/MainWorkflow.cpp | 6 ++++-- src/Workflow/MainWorkflow.h | 13 ++++++++----- src/Workflow/TrackWorkflow.cpp | 10 ++++++---- src/Workflow/TrackWorkflow.h | 2 +- src/gui/RenderPreviewWidget.cpp | 1 - 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/Workflow/MainWorkflow.cpp b/src/Workflow/MainWorkflow.cpp index b66f547eb..ff1436e90 100644 --- a/src/Workflow/MainWorkflow.cpp +++ b/src/Workflow/MainWorkflow.cpp @@ -25,7 +25,7 @@ #include "MainWorkflow.h" -MainWorkflow::MainWorkflow() +MainWorkflow::MainWorkflow() : m_renderStarted( false ) { m_tracks = new TrackWorkflow*[NB_TRACKS]; for (unsigned int i = 0; i < NB_TRACKS; ++i) @@ -43,6 +43,7 @@ void MainWorkflow::addClip( Clip* clip, unsigned int trackId, qint64 start ) void MainWorkflow::startRender() { + m_renderStarted = true; m_currentFrame = 0; emit frameChanged( 0 ); m_length = m_tracks[0]->getLength(); @@ -60,8 +61,9 @@ unsigned char* MainWorkflow::getOutput() void MainWorkflow::setPosition( float pos ) { + if ( m_renderStarted == false ) + return ; qint64 frame = (float)m_length * pos; - qDebug() << "Setting current frame to " << frame << '(' << m_length << '*' << pos << ')'; m_tracks[0]->setPosition( pos ); m_currentFrame = frame; emit frameChanged( frame ); diff --git a/src/Workflow/MainWorkflow.h b/src/Workflow/MainWorkflow.h index eb537d4f8..1f94ddc7e 100644 --- a/src/Workflow/MainWorkflow.h +++ b/src/Workflow/MainWorkflow.h @@ -43,17 +43,20 @@ class MainWorkflow : public QObject unsigned char* getOutput(); /** - \brief Set the workflow position - - \param pos: The position in vlc position + * \brief Set the workflow position + * \param pos: The position in vlc position */ void setPosition( float pos ); /** - \return Returns the global length of the workflow - in frames. + * \return Returns the global length of the workflow + * in frames. */ qint64 getLength() const; + /** + * This boolean describe is a render has been started + */ + bool m_renderStarted; private: TrackWorkflow** m_tracks; diff --git a/src/Workflow/TrackWorkflow.cpp b/src/Workflow/TrackWorkflow.cpp index 314f60a5f..e724c15fe 100644 --- a/src/Workflow/TrackWorkflow.cpp +++ b/src/Workflow/TrackWorkflow.cpp @@ -148,11 +148,13 @@ unsigned char* TrackWorkflow::getOutput( qint64 currentFrame ) void TrackWorkflow::setPosition( float pos ) { - qint64 frame = (float)m_length * pos; - QMap::iterator it = m_clips.begin(); - const QMap::iterator end = m_clips.end(); - QMap::iterator next = m_clips.end(); + qint64 frame = (float)m_length * pos; + QMap::iterator it = m_clips.begin(); + const QMap::iterator end = m_clips.end(); + QMap::iterator next = end; + if ( m_mediaPlayer->isPlaying() == false ) + return ; QWriteLocker lock( m_currentLock ); if ( frame > m_length ) { diff --git a/src/Workflow/TrackWorkflow.h b/src/Workflow/TrackWorkflow.h index 96087ae71..bdbf6b6ed 100644 --- a/src/Workflow/TrackWorkflow.h +++ b/src/Workflow/TrackWorkflow.h @@ -85,7 +85,7 @@ class TrackWorkflow : public QObject QWaitCondition* m_waitCondition; LibVLCpp::MediaPlayer* m_mediaPlayer; /** - \brief The track length in frames. + * \brief The track length in frames. */ qint64 m_length; diff --git a/src/gui/RenderPreviewWidget.cpp b/src/gui/RenderPreviewWidget.cpp index 06c2a5a37..1f0ab79d8 100644 --- a/src/gui/RenderPreviewWidget.cpp +++ b/src/gui/RenderPreviewWidget.cpp @@ -96,7 +96,6 @@ void RenderPreviewWidget::togglePlayPause( bool /*forcePause*/ ) startPreview( NULL ); else { - qDebug() << m_mediaPlayer->isPlaying(); if ( m_mediaPlayer->isPlaying() == false ) m_mediaPlayer->play(); else -- GitLab