1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-05 13:47:26 +02:00

* Added some queueState safety mechanism. Phonon's error signal fails to fire sometimes. Sigh.

This commit is contained in:
Christian Muehlhaeuser
2012-05-24 13:42:02 +02:00
parent 4b059293d1
commit c574dfeff3
2 changed files with 20 additions and 1 deletions

View File

@@ -80,6 +80,10 @@ AudioEngine::AudioEngine()
connect( m_audioOutput, SIGNAL( volumeChanged( qreal ) ), SLOT( onVolumeChanged( qreal ) ) ); connect( m_audioOutput, SIGNAL( volumeChanged( qreal ) ), SLOT( onVolumeChanged( qreal ) ) );
m_stateQueueTimer.setInterval( 5000 );
m_stateQueueTimer.setSingleShot( true );
connect( &m_stateQueueTimer, SIGNAL( timeout() ), SLOT( queueStateSafety() ) );
onVolumeChanged( m_audioOutput->volume() ); onVolumeChanged( m_audioOutput->volume() );
#ifndef Q_WS_X11 #ifndef Q_WS_X11
@@ -867,17 +871,29 @@ AudioEngine::checkStateQueue()
} }
void
AudioEngine::queueStateSafety()
{
tDebug() << Q_FUNC_INFO;
m_stateQueue.clear();
}
void void
AudioEngine::queueState( AudioState state ) AudioEngine::queueState( AudioState state )
{ {
tDebug() << "Enqueuing state command:" << state << m_stateQueue.count(); if ( m_stateQueueTimer.isActive() )
m_stateQueueTimer.stop();
tDebug() << "Enqueuing state command:" << state << m_stateQueue.count();
m_stateQueue.enqueue( state ); m_stateQueue.enqueue( state );
if ( m_stateQueue.count() == 1 ) if ( m_stateQueue.count() == 1 )
{ {
checkStateQueue(); checkStateQueue();
} }
m_stateQueueTimer.start();
} }

View File

@@ -138,6 +138,8 @@ private slots:
void sendWaitingNotification() const; void sendWaitingNotification() const;
void queueStateSafety();
private: private:
void checkStateQueue(); void checkStateQueue();
void queueState( AudioState state ); void queueState( AudioState state );
@@ -169,6 +171,7 @@ private:
AudioState m_state; AudioState m_state;
QQueue< AudioState > m_stateQueue; QQueue< AudioState > m_stateQueue;
QTimer m_stateQueueTimer;
static AudioEngine* s_instance; static AudioEngine* s_instance;
}; };