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:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user