Restore thread priority after tex parsing

This commit is contained in:
Zach Pomerantz 2016-04-04 10:57:04 -07:00
parent 79e5286335
commit d23d0f6432

View file

@ -11,20 +11,22 @@
#include "TextureCache.h" #include "TextureCache.h"
#include <QNetworkReply>
#include <QPainter>
#include <QRunnable>
#include <QThreadPool>
#include <QImageReader>
#include <mutex> #include <mutex>
#include <glm/glm.hpp> #include <glm/glm.hpp>
#include <glm/gtc/random.hpp> #include <glm/gtc/random.hpp>
#include <QNetworkReply>
#include <QPainter>
#include <QRunnable>
#include <QThreadPool>
#include <qimagereader.h>
#include <PathUtils.h>
#include <gpu/Batch.h> #include <gpu/Batch.h>
#include <Finally.h>
#include <PathUtils.h>
#include "ModelNetworkingLogging.h" #include "ModelNetworkingLogging.h"
TextureCache::TextureCache() { TextureCache::TextureCache() {
@ -283,10 +285,12 @@ void ImageReader::run() {
originalPriority = QThread::NormalPriority; originalPriority = QThread::NormalPriority;
} }
QThread::currentThread()->setPriority(QThread::LowPriority); QThread::currentThread()->setPriority(QThread::LowPriority);
Finally restorePriority([originalPriority]{
QThread::currentThread()->setPriority(originalPriority);
});
if (!_resource.data()) { if (!_resource.data()) {
qCWarning(modelnetworking) << "Abandoning load of" << _url << "; could not get strong ref"; qCWarning(modelnetworking) << "Abandoning load of" << _url << "; could not get strong ref";
QThread::currentThread()->setPriority(originalPriority);
return; return;
} }
@ -318,7 +322,6 @@ void ImageReader::run() {
auto resource = _resource.toStrongRef(); auto resource = _resource.toStrongRef();
if (!resource) { if (!resource) {
qCWarning(modelnetworking) << "Abandoning load of" << _url << "; could not get strong ref"; qCWarning(modelnetworking) << "Abandoning load of" << _url << "; could not get strong ref";
QThread::currentThread()->setPriority(originalPriority);
return; return;
} }
@ -336,8 +339,6 @@ void ImageReader::run() {
Q_ARG(void*, texture), Q_ARG(void*, texture),
Q_ARG(int, originalWidth), Q_ARG(int, originalHeight)); Q_ARG(int, originalWidth), Q_ARG(int, originalHeight));
} }
QThread::currentThread()->setPriority(originalPriority);
} }
void NetworkTexture::setImage(void* voidTexture, int originalWidth, void NetworkTexture::setImage(void* voidTexture, int originalWidth,