diff --git a/src/libtomahawk/network/ConnectionManager.cpp b/src/libtomahawk/network/ConnectionManager.cpp index 7dd45a647..9409eccad 100644 --- a/src/libtomahawk/network/ConnectionManager.cpp +++ b/src/libtomahawk/network/ConnectionManager.cpp @@ -82,7 +82,7 @@ void ConnectionManager::handleSipInfo( const Tomahawk::peerinfo_ptr &peerInfo ) { // Start handling in a separate thread so that we do not block the event loop. - QtConcurrent::run( this, &ConnectionManager::handleSipInfoPrivate, peerInfo ); + QtConcurrent::run( &ConnectionManager::handleSipInfoPrivateS, peerInfo, weakRef().toStrongRef() ); } QWeakPointer @@ -264,6 +264,12 @@ ConnectionManager::socketError( QAbstractSocket::SocketError error ) tryConnect(); } +void +ConnectionManager::handleSipInfoPrivateS( const Tomahawk::peerinfo_ptr &peerInfo, const QSharedPointer &connectionManager ) +{ + connectionManager->handleSipInfoPrivate( peerInfo ); +} + void ConnectionManager::activate() { diff --git a/src/libtomahawk/network/ConnectionManager.h b/src/libtomahawk/network/ConnectionManager.h index fc5b6525a..eca5a6102 100644 --- a/src/libtomahawk/network/ConnectionManager.h +++ b/src/libtomahawk/network/ConnectionManager.h @@ -53,6 +53,9 @@ private: Q_DECLARE_PRIVATE( ConnectionManager ) ConnectionManagerPrivate* d_ptr; + // Proxy to hand over a strong reference to the connectionManager + static void handleSipInfoPrivateS( const Tomahawk::peerinfo_ptr& peerInfo, const QSharedPointer& connectionManager ); + void activate(); void deactivate(); void connectToPeer(const Tomahawk::peerinfo_ptr& peerInfo , bool lock);