Bug 1339097 - Allow PuppetWidget::GetLayerManager to return a layer manager even if it doesn't have a tabchild. r?dvander draft
authorKartikaya Gupta <kgupta@mozilla.com>
Tue, 14 Feb 2017 13:15:50 -0500
changeset 483702 10a8f5a077a3c4e4c997bc3b3d02ce80e96c31be
parent 483701 7c8cbd22d82a2029e0c6ac08206a057d8d88c1d4
child 545692 31ee805ef44cbc9dea41936be10d4ab156069566
push id45371
push userkgupta@mozilla.com
push dateTue, 14 Feb 2017 18:25:54 +0000
reviewersdvander
bugs1339097
milestone54.0a1
Bug 1339097 - Allow PuppetWidget::GetLayerManager to return a layer manager even if it doesn't have a tabchild. r?dvander MozReview-Commit-ID: Ee41WIUIC4U
widget/PuppetWidget.cpp
--- 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();