1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-09 07:36:48 +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 <QLocale>
#include <QStringList>
#include <QThread>
#include <QUrl>
static QNetworkAccessManager* nam = 0;
static QMap< QThread*, QNetworkAccessManager* > threadNamMap;
QString
lastfm::ws::host()
@@ -191,18 +192,30 @@ lastfm::ws::parse( QNetworkReply* reply ) throw( ParseError )
QNetworkAccessManager*
lastfm::nam()
{
if (!::nam) ::nam = new NetworkAccessManager( qApp );
return ::nam;
{
QThread* thread = QThread::currentThread();
if ( !threadNamMap.contains( thread ) )
{
NetworkAccessManager* newNam = new NetworkAccessManager();
threadNamMap[thread] = newNam;
return newNam;
}
return threadNamMap[thread];
}
void
lastfm::setNetworkAccessManager( QNetworkAccessManager* nam )
{
delete ::nam;
::nam = nam;
nam->setParent( qApp ); // ensure it isn't deleted out from under us
QThread* thread = QThread::currentThread();
if ( threadNamMap.contains( thread ) )
{
delete threadNamMap[thread];
threadNamMap[thread] = 0;
}
threadNamMap[thread] = nam;
}