X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fcore%2FInformationManager.cxx;fp=src%2Fcore%2FInformationManager.cxx;h=7044381511b32ce270ad6fc32756bc6b2ce4b8bd;hp=500f79f1406f661c2a4ac53747fa053898ff0db6;hb=568fd6801188fb8c092c7820102824a572ec656e;hpb=f9d8bd4a0312a92a1ec3493e83996c0a99d8d1bf diff --git a/src/core/InformationManager.cxx b/src/core/InformationManager.cxx index 500f79f..7044381 100644 --- a/src/core/InformationManager.cxx +++ b/src/core/InformationManager.cxx @@ -28,6 +28,7 @@ InformationManager::InformationManager() } InformationManager::~InformationManager() { + disassemblerThread.quit(); for (auto b : blocks) delete b.second; @@ -36,14 +37,19 @@ InformationManager::~InformationManager() { for (auto i : plugins) delete i; + disassemblerThread.wait(); } void InformationManager::reset(const std::string& filename) { this->filename = filename; disassembler.reset(createLLVMDisassembler(filename, this)); emit resetEvent(); - if (disassembler.get() != NULL) - disassembler.get()->start(); + if (disassembler.get() != NULL) { + disassembler.get()->moveToThread(&disassemblerThread); + connect(&disassemblerThread, &QThread::started, + disassembler.get(), &Disassembler::start); + disassemblerThread.start(); + } } void InformationManager::load(const std::string& filename) {