зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1637890 - P4. Process events dispatched by destructors during shutdown. r=froydnj
We allow the last tasks dispatched during shutdown to be run rather than just leaking them. Differential Revision: https://phabricator.services.mozilla.com/D75497
This commit is contained in:
Родитель
61fceb7c07
Коммит
38cfa9db61
|
@ -649,6 +649,17 @@ nsresult ShutdownXPCOM(nsIServiceManager* aServMgr) {
|
|||
|
||||
NS_ProcessPendingEvents(thread);
|
||||
|
||||
if (observerService) {
|
||||
mozilla::KillClearOnShutdown(ShutdownPhase::ShutdownLoaders);
|
||||
observerService->Shutdown();
|
||||
}
|
||||
|
||||
// Free ClearOnShutdown()'ed smart pointers. This needs to happen *after*
|
||||
// we've finished notifying observers of XPCOM shutdown, because shutdown
|
||||
// observers themselves might call ClearOnShutdown().
|
||||
// Some destructors may fire extra runnables that will be processed below.
|
||||
mozilla::KillClearOnShutdown(ShutdownPhase::ShutdownFinal);
|
||||
|
||||
// Shutdown all remaining threads. This method does not return until
|
||||
// all threads created using the thread manager (with the exception of
|
||||
// the main thread) have exited.
|
||||
|
@ -662,17 +673,7 @@ nsresult ShutdownXPCOM(nsIServiceManager* aServMgr) {
|
|||
BackgroundHangMonitor().NotifyActivity();
|
||||
|
||||
mozilla::dom::JSExecutionManager::Shutdown();
|
||||
|
||||
if (observerService) {
|
||||
mozilla::KillClearOnShutdown(ShutdownPhase::ShutdownLoaders);
|
||||
observerService->Shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
// Free ClearOnShutdown()'ed smart pointers. This needs to happen *after*
|
||||
// we've finished notifying observers of XPCOM shutdown, because shutdown
|
||||
// observers themselves might call ClearOnShutdown().
|
||||
mozilla::KillClearOnShutdown(ShutdownPhase::ShutdownFinal);
|
||||
|
||||
AbstractThread::ShutdownMainThread();
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче