1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-05 21:57:41 +02:00

* Only store results in Pipeline when we're working on temporary queries - e.g. for the rest-API.

This commit is contained in:
Christian Muehlhaeuser
2013-03-31 05:33:35 +02:00
parent d0631bf75e
commit 3745cd247e
2 changed files with 27 additions and 12 deletions

View File

@@ -306,10 +306,14 @@ Pipeline::reportResults( QID qid, const QList< result_ptr >& results )
if ( !cleanResults.isEmpty() ) if ( !cleanResults.isEmpty() )
{ {
q->addResults( cleanResults ); q->addResults( cleanResults );
if ( m_queries_temporary.contains( q ) )
{
foreach ( const result_ptr& r, cleanResults ) foreach ( const result_ptr& r, cleanResults )
{ {
m_rids.insert( r->id(), r ); m_rids.insert( r->id(), r );
} }
}
if ( q->solved() && !q->isFullTextQuery() ) if ( q->solved() && !q->isFullTextQuery() )
{ {
@@ -552,13 +556,31 @@ Pipeline::decQIDState( const Tomahawk::query_ptr& query )
void void
Pipeline::onTemporaryQueryTimer() Pipeline::onTemporaryQueryTimer()
{ {
QMutexLocker lock( &m_mut );
tDebug() << Q_FUNC_INFO; tDebug() << Q_FUNC_INFO;
QMutexLocker lock( &m_mut );
m_temporaryQueryTimer.stop(); m_temporaryQueryTimer.stop();
for ( int i = m_queries_temporary.count() - 1; i >= 0; i-- ) for ( int i = m_queries_temporary.count() - 1; i >= 0; i-- )
{ {
query_ptr q = m_queries_temporary.takeAt( i ); query_ptr q = m_queries_temporary.takeAt( i );
m_qids.remove( q->id() ); m_qids.remove( q->id() );
foreach ( const Tomahawk::result_ptr& r, q->results() )
m_rids.remove( r->id() );
} }
} }
query_ptr
Pipeline::query( const QID& qid ) const
{
return m_qids.value( qid );
}
result_ptr
Pipeline::result( const RID& rid ) const
{
return m_rids.value( rid );
}

View File

@@ -67,15 +67,8 @@ public:
void addResolver( Resolver* r ); void addResolver( Resolver* r );
void removeResolver( Resolver* r ); void removeResolver( Resolver* r );
query_ptr query( const QID& qid ) const query_ptr query( const QID& qid ) const;
{ result_ptr result( const RID& rid ) const;
return m_qids.value( qid );
}
result_ptr result( const RID& rid ) const
{
return m_rids.value( rid );
}
bool isResolving( const query_ptr& q ) const; bool isResolving( const query_ptr& q ) const;