mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 22:01:30 +00:00
Bug 703484 - Part 1: Allow OMTC to be used with basic layers. r=bgirard
--HG-- extra : rebase_source : a96747d6ea09d7112649fa46d2d6a84ababaeaab
This commit is contained in:
parent
7e3b302b27
commit
8c545c33a9
@ -494,7 +494,6 @@ CompositorParent::AllocPLayers(const LayersBackend& aBackendType, int* aMaxTextu
|
|||||||
*aMaxTextureSize = layerManager->GetMaxTextureSize();
|
*aMaxTextureSize = layerManager->GetMaxTextureSize();
|
||||||
return new ShadowLayersParent(slm, this);
|
return new ShadowLayersParent(slm, this);
|
||||||
} else if (aBackendType == LayerManager::LAYERS_BASIC) {
|
} else if (aBackendType == LayerManager::LAYERS_BASIC) {
|
||||||
// This require Cairo to be thread-safe
|
|
||||||
nsRefPtr<LayerManager> layerManager = new BasicShadowLayerManager(mWidget);
|
nsRefPtr<LayerManager> layerManager = new BasicShadowLayerManager(mWidget);
|
||||||
mWidget = NULL;
|
mWidget = NULL;
|
||||||
mLayerManager = layerManager;
|
mLayerManager = layerManager;
|
||||||
|
@ -3194,9 +3194,21 @@ nsWindow::GetLayerManager(PLayersChild* aShadowManager,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fall back to software if we couldn't use any hardware backends.
|
// Fall back to software if we couldn't use any hardware backends.
|
||||||
|
if (!mLayerManager) {
|
||||||
|
// Try to use an async compositor first, if possible
|
||||||
|
bool useCompositor =
|
||||||
|
Preferences::GetBool("layers.offmainthreadcomposition.enabled", false);
|
||||||
|
if (useCompositor) {
|
||||||
|
// e10s uses the parameter to pass in the shadow manager from the TabChild
|
||||||
|
// so we don't expect to see it there since this doesn't support e10s.
|
||||||
|
NS_ASSERTION(aShadowManager == nsnull, "Async Compositor not supported with e10s");
|
||||||
|
CreateCompositor();
|
||||||
|
}
|
||||||
|
|
||||||
if (!mLayerManager)
|
if (!mLayerManager)
|
||||||
mLayerManager = CreateBasicLayerManager();
|
mLayerManager = CreateBasicLayerManager();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NS_ASSERTION(mLayerManager, "Couldn't provide a valid layer manager.");
|
NS_ASSERTION(mLayerManager, "Couldn't provide a valid layer manager.");
|
||||||
|
|
||||||
|
@ -876,8 +876,12 @@ void nsBaseWidget::CreateCompositor()
|
|||||||
AsyncChannel::Side childSide = mozilla::ipc::AsyncChannel::Child;
|
AsyncChannel::Side childSide = mozilla::ipc::AsyncChannel::Child;
|
||||||
mCompositorChild->Open(parentChannel, childMessageLoop, childSide);
|
mCompositorChild->Open(parentChannel, childMessageLoop, childSide);
|
||||||
PRInt32 maxTextureSize;
|
PRInt32 maxTextureSize;
|
||||||
PLayersChild* shadowManager =
|
PLayersChild* shadowManager;
|
||||||
mCompositorChild->SendPLayersConstructor(LayerManager::LAYERS_OPENGL, &maxTextureSize);
|
if (mUseAcceleratedRendering) {
|
||||||
|
shadowManager = mCompositorChild->SendPLayersConstructor(LayerManager::LAYERS_OPENGL, &maxTextureSize);
|
||||||
|
} else {
|
||||||
|
shadowManager = mCompositorChild->SendPLayersConstructor(LayerManager::LAYERS_BASIC, &maxTextureSize);
|
||||||
|
}
|
||||||
|
|
||||||
if (shadowManager) {
|
if (shadowManager) {
|
||||||
ShadowLayerForwarder* lf = lm->AsShadowForwarder();
|
ShadowLayerForwarder* lf = lm->AsShadowForwarder();
|
||||||
@ -887,7 +891,10 @@ void nsBaseWidget::CreateCompositor()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lf->SetShadowManager(shadowManager);
|
lf->SetShadowManager(shadowManager);
|
||||||
|
if (mUseAcceleratedRendering)
|
||||||
lf->SetParentBackendType(LayerManager::LAYERS_OPENGL);
|
lf->SetParentBackendType(LayerManager::LAYERS_OPENGL);
|
||||||
|
else
|
||||||
|
lf->SetParentBackendType(LayerManager::LAYERS_BASIC);
|
||||||
lf->SetMaxTextureSize(maxTextureSize);
|
lf->SetMaxTextureSize(maxTextureSize);
|
||||||
|
|
||||||
mLayerManager = lm;
|
mLayerManager = lm;
|
||||||
@ -913,8 +920,6 @@ LayerManager* nsBaseWidget::GetLayerManager(PLayersChild* aShadowManager,
|
|||||||
|
|
||||||
mUseAcceleratedRendering = GetShouldAccelerate();
|
mUseAcceleratedRendering = GetShouldAccelerate();
|
||||||
|
|
||||||
if (mUseAcceleratedRendering) {
|
|
||||||
|
|
||||||
// Try to use an async compositor first, if possible
|
// Try to use an async compositor first, if possible
|
||||||
if (UseOffMainThreadCompositing()) {
|
if (UseOffMainThreadCompositing()) {
|
||||||
// e10s uses the parameter to pass in the shadow manager from the TabChild
|
// e10s uses the parameter to pass in the shadow manager from the TabChild
|
||||||
@ -923,6 +928,7 @@ LayerManager* nsBaseWidget::GetLayerManager(PLayersChild* aShadowManager,
|
|||||||
CreateCompositor();
|
CreateCompositor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mUseAcceleratedRendering) {
|
||||||
if (!mLayerManager) {
|
if (!mLayerManager) {
|
||||||
nsRefPtr<LayerManagerOGL> layerManager = new LayerManagerOGL(this);
|
nsRefPtr<LayerManagerOGL> layerManager = new LayerManagerOGL(this);
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user