// private: void Phantom::doExit(int code) { emit aboutToExit(code); m_terminated = true; m_returnValue = code; // Iterate in reverse order so the first page is the last one scheduled for deletion. // The first page is the root object, which will be invalidated when it is deleted. // This causes an assertion to go off in BridgeJSC.cpp Instance::createRuntimeObject. QListIterator<QPointer<WebPage> > i(m_pages); i.toBack(); while (i.hasPrevious()) { const QPointer<WebPage> page = i.previous(); if (!page) { continue; } // stop processing of JavaScript code by loading a blank page page->mainFrame()->setUrl(QUrl(QStringLiteral("about:blank"))); // delay deletion into the event loop, direct deletion can trigger crashes page->deleteLater(); } m_pages.clear(); m_page = 0; QApplication::instance()->exit(code); }
WorkflowState* WorkflowStateMachine::newState(WorkflowState* state) { RequestEnterStateTransition* transToState = new RequestEnterStateTransition(state->getUid()); transToState->setTargetState(state); mParentState->addTransition(transToState); connect(state, SIGNAL(entered()), this, SIGNAL(activeStateChanged())); mStates[state->getUid()] = state; connect(state, SIGNAL(aboutToExit()), this, SIGNAL(activeStateAboutToChange())); return state; }
// private: void Phantom::doExit(int code) { if (m_config.debug()) { Utils::cleanupFromDebug(); } emit aboutToExit(code); m_terminated = true; m_returnValue = code; qDeleteAll(m_pages); m_pages.clear(); m_page = 0; QApplication::instance()->exit(code); }
// private: void Phantom::doExit(int code) { emit aboutToExit(code); m_terminated = true; m_returnValue = code; foreach (QPointer<WebPage> page, m_pages) { if (!page) continue; // stop processing of JavaScript code by loading a blank page page->mainFrame()->setUrl(QUrl(QStringLiteral("about:blank"))); // delay deletion into the event loop, direct deletion can trigger crashes page->deleteLater(); } m_pages.clear(); m_page = 0; QApplication::instance()->exit(code); }
void WorkflowState::onExit(QEvent * event) { emit aboutToExit(); }