mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-03-25 02:09:48 +01:00
Rework HttpIODeviceReadyHandler
This commit is contained in:
parent
2200527678
commit
3fd5f6f850
@ -117,11 +117,11 @@ httpIODeviceFactory( const Tomahawk::result_ptr&, const QString& url,
|
||||
{
|
||||
QNetworkRequest req( url );
|
||||
// Follow HTTP Redirects
|
||||
NetworkReply* reply = new NetworkReply( Tomahawk::Utils::nam()->get( req ) );
|
||||
QSharedPointer< NetworkReply > reply( new NetworkReply( Tomahawk::Utils::nam()->get( req ) ) );
|
||||
qRegisterMetaType<NetworkReply*>("NetworkReply*");
|
||||
qRegisterMetaType<IODeviceCallback>("IODeviceCallback");
|
||||
HttpIODeviceReadyHandler* handler = new HttpIODeviceReadyHandler( reply, callback );
|
||||
reply->connect( reply, SIGNAL( finalUrlReached() ),
|
||||
reply->connect( reply.data(), SIGNAL( finalUrlReached() ),
|
||||
handler, SLOT( called() ));
|
||||
}
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
#include "UrlHandler.h"
|
||||
|
||||
#include "utils/Logger.h"
|
||||
#include "utils/NetworkReply.h"
|
||||
|
||||
class HttpIODeviceReadyHandler : public QObject
|
||||
@ -29,15 +30,12 @@ class HttpIODeviceReadyHandler : public QObject
|
||||
|
||||
public:
|
||||
|
||||
NetworkReply* reply;
|
||||
QSharedPointer<NetworkReply> reply;
|
||||
IODeviceCallback callback;
|
||||
QWeakPointer<HttpIODeviceReadyHandler> ref;
|
||||
bool once;
|
||||
|
||||
HttpIODeviceReadyHandler( NetworkReply* _reply, IODeviceCallback _callback )
|
||||
HttpIODeviceReadyHandler( const QSharedPointer<NetworkReply>& _reply, IODeviceCallback _callback )
|
||||
: reply( _reply )
|
||||
, callback( _callback )
|
||||
, once( false )
|
||||
{
|
||||
// Do Nothing
|
||||
}
|
||||
@ -46,14 +44,11 @@ public slots:
|
||||
|
||||
void called()
|
||||
{
|
||||
// Sometimes Qt calls this function twice. Weird.
|
||||
if (once) {
|
||||
deleteLater();
|
||||
}
|
||||
once = true;
|
||||
|
||||
QSharedPointer< QIODevice > sp( reply->reply(), &QObject::deleteLater );
|
||||
callback( reply->reply()->url().toString(), sp );
|
||||
tLog() << Q_FUNC_INFO << reply->reply();
|
||||
QSharedPointer< QNetworkReply > sp( reply->reply(), &QObject::deleteLater );
|
||||
reply->disconnectFromReply();
|
||||
QSharedPointer< QIODevice > spIO = sp.staticCast< QIODevice>();
|
||||
callback( sp->url().toString(), spIO );
|
||||
|
||||
// Call once, then self-destruct
|
||||
deleteLater();
|
||||
|
Loading…
x
Reference in New Issue
Block a user