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

Update local liblastfm2 to deal better with threads and qnams

This commit is contained in:
Jeff Mitchell
2011-05-01 02:19:59 -04:00
parent 2a4b0b2956
commit 032e6f8d6f

View File

@@ -25,9 +25,10 @@
#include <QDomElement> #include <QDomElement>
#include <QLocale> #include <QLocale>
#include <QStringList> #include <QStringList>
#include <QThread>
#include <QUrl> #include <QUrl>
static QNetworkAccessManager* nam = 0;
static QMap< QThread*, QNetworkAccessManager* > threadNamMap;
QString QString
lastfm::ws::host() lastfm::ws::host()
@@ -191,18 +192,30 @@ lastfm::ws::parse( QNetworkReply* reply ) throw( ParseError )
QNetworkAccessManager* QNetworkAccessManager*
lastfm::nam() lastfm::nam()
{ {
if (!::nam) ::nam = new NetworkAccessManager( qApp ); QThread* thread = QThread::currentThread();
return ::nam; if ( !threadNamMap.contains( thread ) )
{
NetworkAccessManager* newNam = new NetworkAccessManager();
threadNamMap[thread] = newNam;
return newNam;
}
return threadNamMap[thread];
} }
void void
lastfm::setNetworkAccessManager( QNetworkAccessManager* nam ) lastfm::setNetworkAccessManager( QNetworkAccessManager* nam )
{ {
delete ::nam; QThread* thread = QThread::currentThread();
::nam = nam; if ( threadNamMap.contains( thread ) )
nam->setParent( qApp ); // ensure it isn't deleted out from under us {
delete threadNamMap[thread];
threadNamMap[thread] = 0;
}
threadNamMap[thread] = nam;
} }