From 9b895034df2ac5ea1edaa2b719208a2dac8efb8d Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Tue, 22 Nov 2011 16:53:35 -0500 Subject: [PATCH] Hopefully fix a case where the seek slider travels on when Phonon is buffering --- src/audiocontrols.cpp | 25 ++++++++++++++++++++----- src/audiocontrols.h | 5 +++-- src/libtomahawk/widgets/SeekSlider.cpp | 4 ++-- src/libtomahawk/widgets/SeekSlider.h | 2 +- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/audiocontrols.cpp b/src/audiocontrols.cpp index 880385ff9..f231ef02d 100644 --- a/src/audiocontrols.cpp +++ b/src/audiocontrols.cpp @@ -19,9 +19,9 @@ #include "audiocontrols.h" #include "ui_audiocontrols.h" -#include -#include -#include +#include +#include +#include #include "audio/audioengine.h" #include "playlist/playlistview.h" @@ -208,9 +208,11 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result ) m_sliderTimeLine.setFrameRange( 0, duration ); m_sliderTimeLine.setCurrentTime( 0 ); m_seekMsecs = -1; - + ui->seekSlider->setVisible( true ); + m_noTimeChange = false; + Tomahawk::InfoSystem::InfoStringHash trackInfo; trackInfo["artist"] = result->artist()->name(); trackInfo["album"] = result->album()->name(); @@ -377,9 +379,22 @@ AudioControls::onPlaybackTimer( qint64 msElapsed ) ui->timeLabel->setText( TomahawkUtils::timeToString( seconds ) ); ui->timeLeftLabel->setText( "-" + TomahawkUtils::timeToString( m_currentTrack->duration() - seconds ) ); - if ( m_sliderTimeLine.currentTime() > msElapsed || m_seekMsecs != -1 ) + if ( m_noTimeChange ) + { + if ( m_sliderTimeLine.currentTime() != msElapsed ) + { + m_noTimeChange = false; + m_sliderTimeLine.resume(); + } + } + else if ( m_sliderTimeLine.currentTime() >= msElapsed || m_seekMsecs != -1 ) { m_sliderTimeLine.setPaused( true ); + + m_noTimeChange = false; + if ( m_sliderTimeLine.currentTime() == msElapsed ) + m_noTimeChange = true; + m_sliderTimeLine.setCurrentTime( msElapsed ); m_seekMsecs = -1; if ( AudioEngine::instance()->state() != AudioEngine::Paused ) diff --git a/src/audiocontrols.h b/src/audiocontrols.h index 0d4c2a973..76c262c30 100644 --- a/src/audiocontrols.h +++ b/src/audiocontrols.h @@ -19,8 +19,8 @@ #ifndef AUDIOCONTROLS_H #define AUDIOCONTROLS_H -#include -#include +#include +#include #include "result.h" #include "playlistinterface.h" @@ -95,6 +95,7 @@ private: QTimeLine m_sliderTimeLine; qint64 m_seekMsecs; + bool m_noTimeChange; }; #endif // AUDIOCONTROLS_H diff --git a/src/libtomahawk/widgets/SeekSlider.cpp b/src/libtomahawk/widgets/SeekSlider.cpp index 87c4699a1..e9025d883 100644 --- a/src/libtomahawk/widgets/SeekSlider.cpp +++ b/src/libtomahawk/widgets/SeekSlider.cpp @@ -18,8 +18,8 @@ #include "SeekSlider.h" -#include -#include +#include +#include #include "utils/tomahawkutils.h" #include "utils/logger.h" diff --git a/src/libtomahawk/widgets/SeekSlider.h b/src/libtomahawk/widgets/SeekSlider.h index 034c214ce..925865eae 100644 --- a/src/libtomahawk/widgets/SeekSlider.h +++ b/src/libtomahawk/widgets/SeekSlider.h @@ -19,7 +19,7 @@ #ifndef SEEKSLIDER_H #define SEEKSLIDER_H -#include +#include #include "dllmacro.h"