From 9c379647aa1b2b0d6fea71a6b4610aa211bfdf71 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Tue, 30 Nov 2010 12:17:16 +0100 Subject: [PATCH] * Clear audio buffers when manually starting a new track. --- src/audio/audioengine.cpp | 17 +++++++++++++++-- src/audio/audioengine.h | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/audio/audioengine.cpp b/src/audio/audioengine.cpp index 78413fa98..b963e76d9 100644 --- a/src/audio/audioengine.cpp +++ b/src/audio/audioengine.cpp @@ -102,6 +102,7 @@ void AudioEngine::previous() { qDebug() << Q_FUNC_INFO; + clearBuffers(); loadPreviousTrack(); } @@ -110,6 +111,7 @@ void AudioEngine::next() { qDebug() << Q_FUNC_INFO; + clearBuffers(); loadNextTrack(); } @@ -285,8 +287,11 @@ AudioEngine::playItem( PlaylistInterface* playlist, const Tomahawk::result_ptr& { qDebug() << Q_FUNC_INFO; + clearBuffers(); + m_playlist = playlist; m_currentTrackPlaylist = playlist; + loadTrack( result ); } @@ -327,6 +332,14 @@ AudioEngine::timerTriggered( unsigned int seconds ) } +void +AudioEngine::clearBuffers() +{ + QMutexLocker lock( &m_mutex ); + m_audio->clearBuffers(); +} + + void AudioEngine::run() { @@ -398,14 +411,14 @@ AudioEngine::loop() !m_audio->isPaused() ) { qDebug() << "Starting next track then"; - next(); + loadNextTrack(); // will need data immediately: nextdelay = 0; } else if ( !m_input.isNull() && !m_input->isOpen() ) { qDebug() << "AudioEngine IODev closed. errorString:" << m_input->errorString(); - next(); + loadNextTrack(); nextdelay = 0; } diff --git a/src/audio/audioengine.h b/src/audio/audioengine.h index 7600beb4b..0244695ff 100644 --- a/src/audio/audioengine.h +++ b/src/audio/audioengine.h @@ -82,6 +82,7 @@ private slots: private: void run(); + void clearBuffers(); QSharedPointer m_input; QSharedPointer m_transcode;