diff --git a/src/libtomahawk/Result.cpp b/src/libtomahawk/Result.cpp index 4f0f3a32f..361c09cdb 100644 --- a/src/libtomahawk/Result.cpp +++ b/src/libtomahawk/Result.cpp @@ -69,6 +69,7 @@ Result::get( const QString& url, const track_ptr& track ) } result_ptr r = result_ptr( new Result( url, track ), &Result::deleteLater ); + r->setWeakRef( r.toWeakRef() ); s_results.insert( url, r ); return r; @@ -271,8 +272,7 @@ Result::toQuery() m_query = query->weakRef(); QList rl; - rl << Result::get( m_url, m_track ); - + rl << weakRef().toStrongRef(); query->addResults( rl ); query->setResolveFinished( true ); return query; @@ -518,3 +518,18 @@ Result::track() const { return m_track; } + + +QWeakPointer +Result::weakRef() +{ + return m_ownRef; +} + + +void +Result::setWeakRef( QWeakPointer weakRef ) +{ + m_ownRef = weakRef; +} + diff --git a/src/libtomahawk/Result.h b/src/libtomahawk/Result.h index f874a542d..5471c7916 100644 --- a/src/libtomahawk/Result.h +++ b/src/libtomahawk/Result.h @@ -64,6 +64,9 @@ public: virtual ~Result(); + QWeakPointer< Tomahawk::Result > weakRef(); + void setWeakRef( QWeakPointer< Tomahawk::Result > weakRef ); + QVariant toVariant() const; QString toString() const; Tomahawk::query_ptr toQuery(); @@ -159,6 +162,7 @@ private: track_ptr m_track; query_wptr m_query; + QWeakPointer< Tomahawk::Result > m_ownRef; }; } //ns