void nsBaseWidget::CreateCompositor() { mCompositorThread = new Thread("CompositorThread"); mCompositorParent = new CompositorParent(this, mCompositorThread); if (mCompositorThread->Start()) { LayerManager* lm = CreateBasicLayerManager(); MessageLoop *childMessageLoop = mCompositorThread->message_loop(); mCompositorChild = new CompositorChild(lm); AsyncChannel *parentChannel = mCompositorParent->GetIPCChannel(); AsyncChannel::Side childSide = mozilla::ipc::AsyncChannel::Child; mCompositorChild->Open(parentChannel, childMessageLoop, childSide); PLayersChild* shadowManager = mCompositorChild->SendPLayersConstructor(LayerManager::LAYERS_OPENGL); if (shadowManager) { ShadowLayerForwarder* lf = lm->AsShadowForwarder(); if (!lf) { delete lm; mCompositorChild = nsnull; return; } lf->SetShadowManager(shadowManager); lf->SetParentBackendType(LayerManager::LAYERS_OPENGL); mLayerManager = lm; } else { NS_WARNING("fail to construct LayersChild"); delete lm; mCompositorChild = nsnull; } } }
void nsBaseWidget::CreateCompositor() { mCompositorThread = new Thread("CompositorThread"); if (mCompositorThread->Start()) { bool renderToEGLSurface = false; #ifdef MOZ_JAVA_COMPOSITOR renderToEGLSurface = true; #endif nsIntRect rect; GetBounds(rect); mCompositorParent = new CompositorParent(this, mCompositorThread->message_loop(), mCompositorThread->thread_id(), renderToEGLSurface, rect.width, rect.height); LayerManager* lm = CreateBasicLayerManager(); MessageLoop *childMessageLoop = mCompositorThread->message_loop(); mCompositorChild = new CompositorChild(lm); AsyncChannel *parentChannel = mCompositorParent->GetIPCChannel(); AsyncChannel::Side childSide = mozilla::ipc::AsyncChannel::Child; mCompositorChild->Open(parentChannel, childMessageLoop, childSide); PRInt32 maxTextureSize; PLayersChild* shadowManager; if (mUseAcceleratedRendering) { shadowManager = mCompositorChild->SendPLayersConstructor(LayerManager::LAYERS_OPENGL, &maxTextureSize); } else { shadowManager = mCompositorChild->SendPLayersConstructor(LayerManager::LAYERS_BASIC, &maxTextureSize); } if (shadowManager) { ShadowLayerForwarder* lf = lm->AsShadowForwarder(); if (!lf) { delete lm; mCompositorChild = nsnull; return; } lf->SetShadowManager(shadowManager); if (mUseAcceleratedRendering) lf->SetParentBackendType(LayerManager::LAYERS_OPENGL); else lf->SetParentBackendType(LayerManager::LAYERS_BASIC); lf->SetMaxTextureSize(maxTextureSize); mLayerManager = lm; } else { // We don't currently want to support not having a LayersChild NS_RUNTIMEABORT("failed to construct LayersChild"); delete lm; mCompositorChild = nsnull; } } }
static void SendLayersDependentApzcTargetConfirmation(nsIPresShell* aShell, uint64_t aInputBlockId, const nsTArray<ScrollableLayerGuid>& aTargets) { LayerManager* lm = aShell->GetLayerManager(); if (!lm) { return; } LayerTransactionChild* shadow = lm->AsShadowForwarder()->GetShadowManager(); if (!shadow) { return; } shadow->SendSetConfirmedTargetAPZC(aInputBlockId, aTargets); }
void nsBaseWidget::CreateCompositor() { bool renderToEGLSurface = false; #ifdef MOZ_ANDROID_OMTC renderToEGLSurface = true; #endif nsIntRect rect; GetBounds(rect); mCompositorParent = new CompositorParent(this, renderToEGLSurface, rect.width, rect.height); LayerManager* lm = CreateBasicLayerManager(); MessageLoop *childMessageLoop = CompositorParent::CompositorLoop(); mCompositorChild = new CompositorChild(lm); AsyncChannel *parentChannel = mCompositorParent->GetIPCChannel(); AsyncChannel::Side childSide = mozilla::ipc::AsyncChannel::Child; mCompositorChild->Open(parentChannel, childMessageLoop, childSide); int32_t maxTextureSize; PLayersChild* shadowManager; mozilla::layers::LayersBackend backendHint = mUseLayersAcceleration ? mozilla::layers::LAYERS_OPENGL : mozilla::layers::LAYERS_BASIC; mozilla::layers::LayersBackend parentBackend; shadowManager = mCompositorChild->SendPLayersConstructor( backendHint, 0, &parentBackend, &maxTextureSize); if (shadowManager) { ShadowLayerForwarder* lf = lm->AsShadowForwarder(); if (!lf) { delete lm; mCompositorChild = nullptr; return; } lf->SetShadowManager(shadowManager); lf->SetParentBackendType(parentBackend); lf->SetMaxTextureSize(maxTextureSize); mLayerManager = lm; } else { // We don't currently want to support not having a LayersChild NS_RUNTIMEABORT("failed to construct LayersChild"); delete lm; mCompositorChild = nullptr; } }
void nsBaseWidget::CreateCompositor() { mCompositorThread = new Thread("CompositorThread"); if (mCompositorThread->Start()) { bool renderToEGLSurface = false; #ifdef MOZ_JAVA_COMPOSITOR renderToEGLSurface = true; #endif nsIntRect rect; GetBounds(rect); mCompositorParent = new CompositorParent(this, mCompositorThread->message_loop(), mCompositorThread->thread_id(), renderToEGLSurface, rect.width, rect.height); LayerManager* lm = CreateBasicLayerManager(); MessageLoop *childMessageLoop = mCompositorThread->message_loop(); mCompositorChild = new CompositorChild(lm); AsyncChannel *parentChannel = mCompositorParent->GetIPCChannel(); AsyncChannel::Side childSide = mozilla::ipc::AsyncChannel::Child; mCompositorChild->Open(parentChannel, childMessageLoop, childSide); PLayersChild* shadowManager = mCompositorChild->SendPLayersConstructor(LayerManager::LAYERS_OPENGL); if (shadowManager) { ShadowLayerForwarder* lf = lm->AsShadowForwarder(); if (!lf) { delete lm; mCompositorChild = nsnull; return; } lf->SetShadowManager(shadowManager); lf->SetParentBackendType(LayerManager::LAYERS_OPENGL); mLayerManager = lm; } else { NS_WARNING("fail to construct LayersChild"); delete lm; mCompositorChild = nsnull; } } }