void CompositorParent::Composite() { NS_ABORT_IF_FALSE(CompositorThreadID() == PlatformThread::CurrentId(), "Composite can only be called on the compositor thread"); mCurrentCompositeTask = NULL; mLastCompose = mozilla::TimeStamp::Now(); if (mPaused || !mLayerManager || !mLayerManager->GetRoot()) { return; } TransformShadowTree(); Layer* aLayer = mLayerManager->GetRoot(); mozilla::layers::RenderTraceLayers(aLayer, "0000"); mLayerManager->EndEmptyTransaction(); #ifdef COMPOSITOR_PERFORMANCE_WARNING if (mExpectedComposeTime + TimeDuration::FromMilliseconds(15) < mozilla::TimeStamp::Now()) { printf_stderr("Compositor: Composite took %i ms.\n", 15 + (int)(mozilla::TimeStamp::Now() - mExpectedComposeTime).ToMilliseconds()); } #endif }
void CompositorParent::ResumeComposition() { NS_ABORT_IF_FALSE(CompositorThreadID() == PlatformThread::CurrentId(), "ResumeComposition() can only be called on the compositor thread"); mPaused = false; #ifdef MOZ_WIDGET_ANDROID static_cast<LayerManagerOGL*>(mLayerManager.get())->gl()->RenewSurface(); #endif }
void CompositorParent::ResumeComposition() { NS_ABORT_IF_FALSE(CompositorThreadID() == PlatformThread::CurrentId(), "ResumeComposition() can only be called on the compositor thread"); mozilla::MonitorAutoLock lock(mResumeCompositionMonitor); mPaused = false; #ifdef MOZ_WIDGET_ANDROID static_cast<LayerManagerOGL*>(mLayerManager.get())->gl()->RenewSurface(); #endif // if anyone's waiting to make sure that composition really got resumed, tell them lock.NotifyAll(); }