fix: create NetworkManager statics in init() (#5254)
This commit is contained in:
@@ -4,19 +4,36 @@
|
||||
|
||||
namespace chatterino {
|
||||
|
||||
QThread NetworkManager::workerThread;
|
||||
QNetworkAccessManager NetworkManager::accessManager;
|
||||
QThread *NetworkManager::workerThread = nullptr;
|
||||
QNetworkAccessManager *NetworkManager::accessManager = nullptr;
|
||||
|
||||
void NetworkManager::init()
|
||||
{
|
||||
NetworkManager::accessManager.moveToThread(&NetworkManager::workerThread);
|
||||
NetworkManager::workerThread.start();
|
||||
assert(!NetworkManager::workerThread);
|
||||
assert(!NetworkManager::accessManager);
|
||||
|
||||
NetworkManager::workerThread = new QThread;
|
||||
NetworkManager::workerThread->start();
|
||||
|
||||
NetworkManager::accessManager = new QNetworkAccessManager;
|
||||
NetworkManager::accessManager->moveToThread(NetworkManager::workerThread);
|
||||
}
|
||||
|
||||
void NetworkManager::deinit()
|
||||
{
|
||||
NetworkManager::workerThread.quit();
|
||||
NetworkManager::workerThread.wait();
|
||||
assert(NetworkManager::workerThread);
|
||||
assert(NetworkManager::accessManager);
|
||||
|
||||
if (NetworkManager::workerThread)
|
||||
{
|
||||
NetworkManager::workerThread->quit();
|
||||
NetworkManager::workerThread->wait();
|
||||
}
|
||||
|
||||
delete NetworkManager::accessManager;
|
||||
NetworkManager::accessManager = nullptr;
|
||||
delete NetworkManager::workerThread;
|
||||
NetworkManager::workerThread = nullptr;
|
||||
}
|
||||
|
||||
} // namespace chatterino
|
||||
|
||||
@@ -10,8 +10,8 @@ class NetworkManager : public QObject
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
static QThread workerThread;
|
||||
static QNetworkAccessManager accessManager;
|
||||
static QThread *workerThread;
|
||||
static QNetworkAccessManager *accessManager;
|
||||
|
||||
static void init();
|
||||
static void deinit();
|
||||
|
||||
@@ -48,7 +48,7 @@ void loadUncached(std::shared_ptr<NetworkData> &&data)
|
||||
NetworkRequester requester;
|
||||
auto *worker = new NetworkTask(std::move(data));
|
||||
|
||||
worker->moveToThread(&NetworkManager::workerThread);
|
||||
worker->moveToThread(NetworkManager::workerThread);
|
||||
|
||||
QObject::connect(&requester, &NetworkRequester::requestUrl, worker,
|
||||
&NetworkTask::run);
|
||||
|
||||
@@ -54,41 +54,41 @@ QNetworkReply *NetworkTask::createReply()
|
||||
{
|
||||
const auto &data = this->data_;
|
||||
const auto &request = this->data_->request;
|
||||
auto &accessManager = NetworkManager::accessManager;
|
||||
auto *accessManager = NetworkManager::accessManager;
|
||||
switch (this->data_->requestType)
|
||||
{
|
||||
case NetworkRequestType::Get:
|
||||
return accessManager.get(request);
|
||||
return accessManager->get(request);
|
||||
|
||||
case NetworkRequestType::Put:
|
||||
return accessManager.put(request, data->payload);
|
||||
return accessManager->put(request, data->payload);
|
||||
|
||||
case NetworkRequestType::Delete:
|
||||
return accessManager.deleteResource(data->request);
|
||||
return accessManager->deleteResource(data->request);
|
||||
|
||||
case NetworkRequestType::Post:
|
||||
if (data->multiPartPayload)
|
||||
{
|
||||
assert(data->payload.isNull());
|
||||
|
||||
return accessManager.post(request,
|
||||
data->multiPartPayload.get());
|
||||
return accessManager->post(request,
|
||||
data->multiPartPayload.get());
|
||||
}
|
||||
else
|
||||
{
|
||||
return accessManager.post(request, data->payload);
|
||||
return accessManager->post(request, data->payload);
|
||||
}
|
||||
case NetworkRequestType::Patch:
|
||||
if (data->multiPartPayload)
|
||||
{
|
||||
assert(data->payload.isNull());
|
||||
|
||||
return accessManager.sendCustomRequest(
|
||||
return accessManager->sendCustomRequest(
|
||||
request, "PATCH", data->multiPartPayload.get());
|
||||
}
|
||||
else
|
||||
{
|
||||
return NetworkManager::accessManager.sendCustomRequest(
|
||||
return NetworkManager::accessManager->sendCustomRequest(
|
||||
request, "PATCH", data->payload);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user