void ReconstructionExecuter::launch(cx::TimedAlgorithmPtr thread) { mPipeline = thread; emit reconstructAboutToStart(); connect(thread.get(), SIGNAL(finished()), this, SIGNAL(reconstructFinished())); thread->execute(); emit reconstructStarted(); }
void UsReconstructionImplService::reconstructFinishedSlot() { mOriginalFileData.mUsRaw->purgeAll(); for (unsigned i=0; i<mExecuters.size(); ++i) { if (mExecuters[i]->getThread()->isFinished()) { ReconstructionExecuterPtr executer = mExecuters[i]; disconnect(executer.get(), SIGNAL(reconstructAboutToStart()), this, SIGNAL(reconstructAboutToStart())); disconnect(executer.get(), SIGNAL(reconstructStarted()), this, SIGNAL(reconstructStarted())); disconnect(executer.get(), SIGNAL(reconstructFinished()), this, SIGNAL(reconstructFinished())); disconnect(executer.get(), SIGNAL(reconstructFinished()), this, SLOT(reconstructFinishedSlot())); mExecuters.erase(mExecuters.begin()+i); i=0; } } }
void UsReconstructionImplService::startReconstruction() { if(!mOutputVolumeParams.isValid()) { reportError("Cannot reconstruct from invalid ultrasound data"); return; } ReconstructionMethodService* algo = this->createAlgorithm(); ReconstructCore::InputParams par = this->createCoreParameters(); USReconstructInputData fileData = mOriginalFileData; fileData.mUsRaw = mOriginalFileData.mUsRaw->copy(); ReconstructionExecuterPtr executer(new ReconstructionExecuter(mPatientModelService, mViewService)); connect(executer.get(), SIGNAL(reconstructAboutToStart()), this, SIGNAL(reconstructAboutToStart())); connect(executer.get(), SIGNAL(reconstructStarted()), this, SIGNAL(reconstructStarted())); connect(executer.get(), SIGNAL(reconstructFinished()), this, SIGNAL(reconstructFinished())); connect(executer.get(), SIGNAL(reconstructFinished()), this, SLOT(reconstructFinishedSlot())); mExecuters.push_back(executer); executer->startReconstruction(algo, par, fileData, mParams->getCreateBModeWhenAngio()->getValue()); }