diff --git a/qrenderdoc/Code/Interface/ShaderProcessingTool.cpp b/qrenderdoc/Code/Interface/ShaderProcessingTool.cpp index 361cd3607..5d1d8d894 100644 --- a/qrenderdoc/Code/Interface/ShaderProcessingTool.cpp +++ b/qrenderdoc/Code/Interface/ShaderProcessingTool.cpp @@ -110,6 +110,8 @@ static ShaderToolOutput RunTool(const ShaderProcessingTool &tool, QWidget *windo QByteArray stdout_data; QProcess process; + QThread *mainThread = QThread::currentThread(); + LambdaThread *thread = new LambdaThread([&]() { if(readStdin) process.setStandardInputFile(input_file); @@ -151,7 +153,12 @@ static ShaderToolOutput RunTool(const ShaderProcessingTool &tool, QWidget *windo // QFile::remove(input_file); QFile::remove(output_file); QFile::remove(stdout_file); + + process.moveToThread(mainThread); }); + + thread->moveObjectToThread(&process); + thread->start(); ShowProgressDialog(window, QApplication::translate("ShaderProcessingTool", diff --git a/qrenderdoc/Code/QRDUtils.h b/qrenderdoc/Code/QRDUtils.h index 4859623f6..8b7243973 100644 --- a/qrenderdoc/Code/QRDUtils.h +++ b/qrenderdoc/Code/QRDUtils.h @@ -305,6 +305,7 @@ public: return true; } + void moveObjectToThread(QObject *o) { o->moveToThread(m_Thread); } bool isCurrentThread() { return QThread::currentThread() == m_Thread; } };