From f5cb775b8f794fc4900fda1fbb2d6c59d695f815 Mon Sep 17 00:00:00 2001 From: manuel Date: Wed, 11 May 2011 18:36:49 +0200 Subject: fix another phonon issue with gaplessplayer (pause() is not synchron so we might start the second player although we issued pause()) --- pacman-c++/common/audio.cpp | 14 +++++++++----- pacman-c++/common/audio.h | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'pacman-c++') diff --git a/pacman-c++/common/audio.cpp b/pacman-c++/common/audio.cpp index eddbace..fe259e2 100644 --- a/pacman-c++/common/audio.cpp +++ b/pacman-c++/common/audio.cpp @@ -328,7 +328,7 @@ void FakeAudioPlayer::finished_ex() /* --------------------------------------------------------------- */ GaplessAudioPlayer::GaplessAudioPlayer(Sound::Type sound, qint32 mark, QObject *parent) - : QObject(parent), m_sound(sound) + : QObject(parent), m_paused(false), m_sound(sound) { m_working = AudioManager::isWorking(); if (!m_working) @@ -367,6 +367,7 @@ void GaplessAudioPlayer::play() { if (!m_working) return; + m_paused = false; if (!m_player1->isPlaying() && !m_player2->isPlaying()) startPlayer1(); } @@ -375,20 +376,23 @@ void GaplessAudioPlayer::pause() { if (!m_working) return; - if (!m_player1->isPaused()) - m_player1->pause(); - if (!m_player2->isPaused()) - m_player2->pause(); + m_paused = true; + m_player1->pause(); + m_player2->pause(); } void GaplessAudioPlayer::startPlayer1() { + if (m_paused) + return; AudioManager::self()->play(m_sound, m_player1); m_player2->pause(); } void GaplessAudioPlayer::startPlayer2() { + if (m_paused) + return; AudioManager::self()->play(m_sound, m_player2); m_player1->pause(); } diff --git a/pacman-c++/common/audio.h b/pacman-c++/common/audio.h index 45af34b..b9b8d8d 100644 --- a/pacman-c++/common/audio.h +++ b/pacman-c++/common/audio.h @@ -105,6 +105,7 @@ protected slots: protected: bool m_working; + bool m_paused; Sound::Type m_sound; AudioPlayer *m_player1; AudioPlayer *m_player2; -- cgit v1.2.3