Bug 1065536, part 3 - Explicitly shut down the CompositorChild in the child process. r=nical

This commit is contained in:
Andrew McCreight 2015-01-02 13:09:06 -08:00
Родитель cab7cc77c1
Коммит b69d978b28
3 изменённых файлов: 15 добавлений и 2 удалений

Просмотреть файл

@ -192,6 +192,14 @@ CompositorChild::ActorDestroy(ActorDestroyReason aWhy)
NewRunnableMethod(this, &CompositorChild::Release));
}
void
CompositorChild::ShutDown()
{
if (sCompositor) {
sCompositor->ActorDestroy(NormalShutdown);
}
}
bool
CompositorChild::RecvSharedCompositorFrameMetrics(
const mozilla::ipc::SharedMemoryBasic::Handle& metrics,

Просмотреть файл

@ -80,6 +80,8 @@ public:
void CancelNotifyAfterRemotePaint(TabChild* aTabChild);
static void ShutDown();
private:
// Private destructor, to discourage deletion outside of Release():
virtual ~CompositorChild();

Просмотреть файл

@ -666,16 +666,19 @@ gfxPlatform::ShutdownLayersIPC()
}
sLayersIPCIsUp = false;
if (XRE_GetProcessType() == GeckoProcessType_Default)
{
GeckoProcessType processType = XRE_GetProcessType();
if (processType == GeckoProcessType_Default) {
// This must happen after the shutdown of media and widgets, which
// are triggered by the NS_XPCOM_SHUTDOWN_OBSERVER_ID notification.
layers::ImageBridgeChild::ShutDown();
#ifdef MOZ_WIDGET_GONK
layers::SharedBufferManagerChild::ShutDown();
#endif
layers::CompositorParent::ShutDown();
} else if (processType == GeckoProcessType_Content) {
layers::CompositorChild::ShutDown();
}
}