From 215d41a87d53a8cdaead3f5d38210ab2584ef0cc Mon Sep 17 00:00:00 2001 From: Nicolas Silva Date: Wed, 3 Sep 2014 13:52:14 +0200 Subject: [PATCH] Bug 1061209 - disable basic layers OMTC except on linux and e10s. r=mattwoodrow --- widget/xpwidgets/nsBaseWidget.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/widget/xpwidgets/nsBaseWidget.cpp b/widget/xpwidgets/nsBaseWidget.cpp index b9afd2ffe26..43984a6d99c 100644 --- a/widget/xpwidgets/nsBaseWidget.cpp +++ b/widget/xpwidgets/nsBaseWidget.cpp @@ -872,6 +872,19 @@ nsBaseWidget::GetPreferredCompositorBackends(nsTArray& aHints) aHints.AppendElement(LayersBackend::LAYERS_BASIC); } +static void +RemoveBasicBackend(nsTArray& aHints) +{ +#ifndef XP_WIN + for (size_t i = 0; i < aHints.Length(); ++i) { + if (aHints[i] == LayersBackend::LAYERS_BASIC && + !Preferences::GetBool("layers.offmainthreadcomposition.force-basic", false)) { + aHints[i] = LayersBackend::LAYERS_NONE; + } + } +#endif +} + void nsBaseWidget::CreateCompositor(int aWidth, int aHeight) { MOZ_ASSERT(gfxPlatform::UsesOffMainThreadCompositing(), @@ -901,6 +914,12 @@ void nsBaseWidget::CreateCompositor(int aWidth, int aHeight) nsTArray backendHints; GetPreferredCompositorBackends(backendHints); +#ifndef MOZ_X11 + if (!mRequireOffMainThreadCompositing) { + RemoveBasicBackend(backendHints); + } +#endif + bool success = false; if (!backendHints.IsEmpty()) { shadowManager = mCompositorChild->SendPLayerTransactionConstructor(