}
InformationManager::~InformationManager() {
+ disassemblerThread.quit();
for (auto b : blocks)
delete b.second;
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)
+ if (disassembler.get() != NULL) {
+ emit resetEvent();
+#ifndef CONFIG_TEST
+ disassembler.get()->moveToThread(&disassemblerThread);
+ connect(&disassemblerThread, &QThread::started,
+ disassembler.get(), &Disassembler::start);
+ disassemblerThread.start();
+#else
disassembler.get()->start();
+#endif
+ }
}
void InformationManager::load(const std::string& filename) {