#include "core/Function.hxx"
#include "core/BasicBlock.hxx"
#include "core/Comment.hxx"
-#include "core/events/NewFunctionEvent.hxx"
#include "core/events/ChangeCommentEvent.hxx"
#include "qt.hxx"
}
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) {
blocks.insert(std::make_pair(bl->getStartAddress(), bl));
}
NewFunctionEvent event(fun->getStartAddress(), fun);
- emit newFunctionEvent(&event);
+ emit newFunctionEvent(event);
}
void InformationManager::finishBasicBlock(BasicBlock*) {