//---------------------------------------------------------------------------- void ctkPluginFrameworkPrivate::shutdown0(bool restart, bool wasActive) { try { { Locker sync(&lock); waitOnOperation(&lock, QString("Framework::") + (restart ? "update" : "stop"), true); operation = DEACTIVATING; state = ctkPlugin::STOPPING; } fwCtx->listeners.emitPluginChanged( ctkPluginEvent(ctkPluginEvent::STOPPING, this->q_func())); if (wasActive) { stopAllPlugins(); } { Locker sync(&lock); fwCtx->uninit(); shuttingDown.fetchAndStoreOrdered(0); shutdownDone_unlocked(restart); } if (restart) { if (wasActive) { q_func().toStrongRef()->start(); } else { init(); } } } catch (const ctkException& e) { shuttingDown.fetchAndStoreOrdered(0); systemShuttingdownDone(ctkPluginFrameworkEvent(ctkPluginFrameworkEvent::PLUGIN_ERROR, this->q_func(), e)); } }
/*! Deletes both the IVmgr and the MainWindow. */ GraspItGUI::~GraspItGUI() { //originally, ivmgr is first // fprintf(stderr,"Delete children\n"); // mainWindow->destroyChildren(); // fprintf(stderr,"Delete ivmgr\n"); //if a dispatcher was being used, set exit code based on its result //clean up plugins and creators stopAllPlugins(); for (size_t i=0; i<mPluginCreators.size(); i++) { delete mPluginCreators[i]; } #ifdef CGDB_ENABLED if (mDispatch) { delete mDispatch; } #endif delete ivmgr; delete mainWindow; }