mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-12 00:54:20 +02:00
* Improved AudioEngine's internal phonon-state handling.
This commit is contained in:
@@ -59,6 +59,7 @@ AudioEngine::AudioEngine()
|
||||
m_mediaObject->setTickInterval( 150 );
|
||||
connect( m_mediaObject, SIGNAL( stateChanged( Phonon::State, Phonon::State ) ), SLOT( onStateChanged( Phonon::State, Phonon::State ) ) );
|
||||
connect( m_mediaObject, SIGNAL( tick( qint64 ) ), SLOT( timerTriggered( qint64 ) ) );
|
||||
connect( m_mediaObject, SIGNAL( aboutToFinish() ), SLOT( onAboutToFinish() ) );
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +124,6 @@ AudioEngine::stop()
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
|
||||
m_expectStop = true;
|
||||
m_mediaObject->stop();
|
||||
|
||||
setCurrentTrack( Tomahawk::result_ptr() );
|
||||
@@ -217,11 +217,6 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result )
|
||||
qDebug() << "Starting new song from url:" << m_currentTrack->url();
|
||||
emit loading( m_currentTrack );
|
||||
|
||||
if ( !m_input.isNull() || m_isPlayingHttp )
|
||||
{
|
||||
m_expectStop = true;
|
||||
}
|
||||
|
||||
if ( !isHttpResult( m_currentTrack->url() ) && !isLocalResult( m_currentTrack->url() ) )
|
||||
{
|
||||
m_mediaObject->setCurrentSource( io.data() );
|
||||
@@ -328,37 +323,37 @@ AudioEngine::playItem( PlaylistInterface* playlist, const Tomahawk::result_ptr&
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AudioEngine::onAboutToFinish()
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
m_expectStop = true;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState )
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO << oldState << newState;
|
||||
qDebug() << Q_FUNC_INFO << oldState << newState << m_expectStop;
|
||||
|
||||
if ( newState == Phonon::ErrorState )
|
||||
{
|
||||
qDebug() << "Phonon Error:" << m_mediaObject->errorString() << m_mediaObject->errorType();
|
||||
}
|
||||
if ( oldState == Phonon::PlayingState && newState == Phonon::StoppedState )
|
||||
{
|
||||
qDebug() << "Expecting stop?" << m_expectStop;
|
||||
if ( !m_expectStop )
|
||||
{
|
||||
qDebug() << "Loading next track.";
|
||||
m_expectStop = false;
|
||||
loadNextTrack();
|
||||
}
|
||||
}
|
||||
else if ( oldState == Phonon::PlayingState && newState == Phonon::PausedState )
|
||||
{
|
||||
qDebug() << m_mediaObject->currentTime() << m_mediaObject->totalTime();
|
||||
if ( m_mediaObject->currentTime() == m_mediaObject->totalTime() )
|
||||
{
|
||||
qDebug() << "Loading next track.";
|
||||
m_expectStop = false;
|
||||
loadNextTrack();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !m_expectStop )
|
||||
return;
|
||||
m_expectStop = false;
|
||||
|
||||
if ( oldState == Phonon::PlayingState )
|
||||
{
|
||||
if ( newState == Phonon::PausedState || newState == Phonon::StoppedState )
|
||||
{
|
||||
qDebug() << "Loading next track.";
|
||||
loadNextTrack();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -100,6 +100,7 @@ private slots:
|
||||
void loadPreviousTrack();
|
||||
void loadNextTrack();
|
||||
|
||||
void onAboutToFinish();
|
||||
void onStateChanged( Phonon::State newState, Phonon::State oldState );
|
||||
void timerTriggered( qint64 time );
|
||||
|
||||
|
@@ -67,11 +67,11 @@ Query::Query( const QString& artist, const QString& track, const QString& album,
|
||||
{
|
||||
connect( Database::instance(), SIGNAL( indexReady() ), SLOT( refreshResults() ), Qt::QueuedConnection );
|
||||
}
|
||||
|
||||
connect( Pipeline::instance(), SIGNAL( resolverAdded( Resolver* ) ),
|
||||
SLOT( onResolverAdded() ), Qt::QueuedConnection );
|
||||
|
||||
connect( Pipeline::instance(), SIGNAL( resolverAdded( Resolver* ) ),
|
||||
SLOT( onResolverAdded() ), Qt::QueuedConnection );
|
||||
connect( Pipeline::instance(), SIGNAL( resolverRemoved( Resolver* ) ),
|
||||
SLOT( onResolverRemoved() ), Qt::QueuedConnection );
|
||||
SLOT( onResolverRemoved() ), Qt::QueuedConnection );
|
||||
}
|
||||
|
||||
|
||||
@@ -154,22 +154,22 @@ Query::onResolvingFinished()
|
||||
|
||||
|
||||
void
|
||||
Query::onResolverAdded( )
|
||||
{
|
||||
if ( !solved() )
|
||||
{
|
||||
refreshResults();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Query::onResolverRemoved( )
|
||||
Query::onResolverAdded()
|
||||
{
|
||||
if ( !solved() )
|
||||
{
|
||||
refreshResults();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Query::onResolverRemoved()
|
||||
{
|
||||
if ( !solved() )
|
||||
{
|
||||
refreshResults();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -106,8 +106,8 @@ public slots:
|
||||
void onResolvingFinished();
|
||||
|
||||
// resolve if not solved()
|
||||
void onResolverAdded( );
|
||||
void onResolverRemoved( );
|
||||
void onResolverAdded();
|
||||
void onResolverRemoved();
|
||||
|
||||
private slots:
|
||||
void onResultStatusChanged();
|
||||
|
Reference in New Issue
Block a user