Bug 1339097 - Allow PuppetWidget::GetLayerManager to return a layer manager even if it doesn't have a tabchild. r?dvander
MozReview-Commit-ID: Ee41WIUIC4U
--- a/widget/PuppetWidget.cpp
+++ b/widget/PuppetWidget.cpp
@@ -5,16 +5,17 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "base/basictypes.h"
#include "ClientLayerManager.h"
#include "gfxPlatform.h"
#include "mozilla/dom/TabChild.h"
+#include "mozilla/gfx/gfxVars.h"
#include "mozilla/Hal.h"
#include "mozilla/IMEStateManager.h"
#include "mozilla/layers/APZChild.h"
#include "mozilla/layers/PLayerTransactionChild.h"
#include "mozilla/layers/WebRenderLayerManager.h"
#include "mozilla/Preferences.h"
#include "mozilla/TextComposition.h"
#include "mozilla/TextEvents.h"
@@ -593,20 +594,20 @@ PuppetWidget::GetLayerManager(PLayerTran
if (XRE_IsParentProcess()) {
// On the parent process there is no CompositorBridgeChild which confuses
// some layers code, so we use basic layers instead. Note that we create
// a non-retaining layer manager since we don't care about performance.
mLayerManager = new BasicLayerManager(BasicLayerManager::BLM_OFFSCREEN);
return mLayerManager;
}
- if (!mTabChild) {
- return nullptr;
- }
- if (mTabChild->GetCompositorOptions().UseWebRender()) {
+ bool useWebRender = mTabChild
+ ? mTabChild->GetCompositorOptions().UseWebRender()
+ : gfxVars::UseWebRender();
+ if (useWebRender) {
mLayerManager = new WebRenderLayerManager(this);
} else {
mLayerManager = new ClientLayerManager(this);
}
}
// Attach a shadow forwarder if none exists.
ShadowLayerForwarder* lf = mLayerManager->AsShadowForwarder();