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:
25
thirdparty/liblastfm2/src/ws/ws.cpp
vendored
25
thirdparty/liblastfm2/src/ws/ws.cpp
vendored
@@ -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()
|
||||||
@@ -192,17 +193,29 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user