зеркало из https://github.com/mozilla/gecko-dev.git
Bug 774388 - Patch 7: Block the main thread on compositor shutdown - r=mattwoodrow
This commit is contained in:
Родитель
ef93653aa4
Коммит
4ecdd340bf
|
@ -136,6 +136,7 @@ private:
|
|||
};
|
||||
|
||||
static StaticRefPtr<CompositorThreadHolder> sCompositorThreadHolder;
|
||||
static bool sFinishedCompositorShutDown = false;
|
||||
|
||||
static MessageLoop* sMainLoop = nullptr;
|
||||
|
||||
|
@ -178,6 +179,7 @@ CompositorThreadHolder::DestroyCompositorThread(Thread* aCompositorThread)
|
|||
DestroyCompositorMap();
|
||||
ReleaseImageBridgeParentSingleton();
|
||||
delete aCompositorThread;
|
||||
sFinishedCompositorShutDown = true;
|
||||
}
|
||||
|
||||
static Thread* CompositorThread() {
|
||||
|
@ -203,6 +205,12 @@ void CompositorParent::ShutDown()
|
|||
MOZ_ASSERT(sCompositorThreadHolder, "The compositor thread has already been shut down!");
|
||||
|
||||
sCompositorThreadHolder = nullptr;
|
||||
|
||||
// No locking is needed around sFinishedCompositorShutDown because it is only
|
||||
// ever accessed on the main thread.
|
||||
while (!sFinishedCompositorShutDown) {
|
||||
NS_ProcessNextEvent(nullptr, true);
|
||||
}
|
||||
}
|
||||
|
||||
MessageLoop* CompositorParent::CompositorLoop()
|
||||
|
|
|
@ -170,6 +170,8 @@ public:
|
|||
/**
|
||||
* Waits for all [CrossProcess]CompositorParent's to be gone,
|
||||
* and destroys the compositor thread and global compositor map.
|
||||
*
|
||||
* Does not return until all of that has completed.
|
||||
*/
|
||||
static void ShutDown();
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче