1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-13 09:34:53 +02:00

* Fixed crash bug caused by multiple sources going on- and offline at a time.

This commit is contained in:
Christian Muehlhaeuser
2011-04-09 11:03:52 +02:00
parent c6442e4dfd
commit c0994e3c24
2 changed files with 31 additions and 21 deletions

View File

@@ -1,3 +1,6 @@
Version 0.0.4:
* Fixed a crash situation caused by sources going on- or offline.
Version 0.0.3: Version 0.0.3:
* Show spinner while resolving playlists. * Show spinner while resolving playlists.
* Go back to previous page visible when deleting a playlist. * Go back to previous page visible when deleting a playlist.

View File

@@ -1,5 +1,5 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === /* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
* *
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org> * Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* *
* Tomahawk is free software: you can redistribute it and/or modify * Tomahawk is free software: you can redistribute it and/or modify
@@ -89,10 +89,13 @@ Query::refreshResults()
void void
Query::onResultStatusChanged() Query::onResultStatusChanged()
{ {
if ( m_results.count() ) {
qStableSort( m_results.begin(), m_results.end(), Query::resultSorter ); QMutexLocker lock( &m_mutex );
checkResults(); if ( m_results.count() )
qStableSort( m_results.begin(), m_results.end(), Query::resultSorter );
}
checkResults();
emit resultsChanged(); emit resultsChanged();
} }
@@ -180,27 +183,31 @@ Query::checkResults()
{ {
bool becameSolved = false; bool becameSolved = false;
bool becameUnsolved = true; bool becameUnsolved = true;
m_playable = false;
// hook up signals, and check solved status
foreach( const result_ptr& rp, m_results )
{ {
if ( rp->score() > 0.0 && rp->collection().isNull() ) QMutexLocker lock( &m_mutex );
{
m_playable = true;
}
if ( !rp->collection().isNull() && rp->collection()->source()->isOnline() )
{
m_playable = true;
if ( rp->score() > 0.99 ) m_playable = false;
// hook up signals, and check solved status
foreach( const result_ptr& rp, m_results )
{
if ( rp->score() > 0.0 && rp->collection().isNull() )
{ {
becameUnsolved = false; m_playable = true;
}
if ( !rp->collection().isNull() && rp->collection()->source()->isOnline() )
{
m_playable = true;
if ( !m_solved ) if ( rp->score() > 0.99 )
{ {
m_solved = true; becameUnsolved = false;
becameSolved = true;
if ( !m_solved )
{
m_solved = true;
becameSolved = true;
}
} }
} }
} }
@@ -226,7 +233,7 @@ Query::toVariant() const
m.insert( "track", track() ); m.insert( "track", track() );
m.insert( "duration", duration() ); m.insert( "duration", duration() );
m.insert( "qid", id() ); m.insert( "qid", id() );
return m; return m;
} }