--- a/gfx/layers/apz/src/APZCTreeManager.cpp
+++ b/gfx/layers/apz/src/APZCTreeManager.cpp
@@ -2464,17 +2464,17 @@ APZCTreeManager::GetTargetAPZC(const Scr
CompositorHitTestInfo* aOutHitResult,
HitTestingTreeNodeAutoLock* aOutScrollbarNode)
{
RecursiveMutexAutoLock lock(mTreeLock);
CompositorHitTestInfo hitResult = CompositorHitTestInfo::eInvisibleToHitTest;
HitTestingTreeNode* scrollbarNode = nullptr;
RefPtr<AsyncPanZoomController> target;
- if (gfx::gfxVars::UseWebRender() && gfxPrefs::WebRenderHitTest()) {
+ if (gfx::gfxVars::UseWebRender()) {
target = GetAPZCAtPointWR(aPoint, &hitResult, &scrollbarNode);
} else {
target = GetAPZCAtPoint(mRootNode, aPoint, &hitResult, &scrollbarNode);
}
if (aOutHitResult) {
*aOutHitResult = hitResult;
}
--- a/gfx/layers/apz/test/gtest/APZTestCommon.h
+++ b/gfx/layers/apz/test/gtest/APZTestCommon.h
@@ -11,16 +11,17 @@
* Defines a set of mock classes and utility functions/classes for
* writing APZ gtests.
*/
#include "gtest/gtest.h"
#include "gmock/gmock.h"
#include "mozilla/Attributes.h"
+#include "mozilla/gfx/gfxVars.h"
#include "mozilla/layers/AsyncCompositionManager.h" // for ViewTransform
#include "mozilla/layers/GeckoContentController.h"
#include "mozilla/layers/CompositorBridgeParent.h"
#include "mozilla/layers/LayerMetricsWrapper.h"
#include "mozilla/layers/APZThreadUtils.h"
#include "mozilla/TypedEnumBits.h"
#include "mozilla/UniquePtr.h"
#include "apz/src/APZCTreeManager.h"
@@ -57,41 +58,47 @@ CreateSingleTouchData(int32_t aIdentifie
// Convenience wrapper for CreateSingleTouchData() that takes loose coordinates.
SingleTouchData
CreateSingleTouchData(int32_t aIdentifier, ScreenIntCoord aX, ScreenIntCoord aY)
{
return CreateSingleTouchData(aIdentifier, ScreenIntPoint(aX, aY));
}
-template<class T>
-class ScopedGfxPref {
+template<class SetArg, class Storage>
+class ScopedGfxSetting {
public:
- ScopedGfxPref(T (*aGetPrefFunc)(void), void (*aSetPrefFunc)(T), T aVal)
+ ScopedGfxSetting(SetArg (*aGetPrefFunc)(void), void (*aSetPrefFunc)(SetArg), SetArg aVal)
: mSetPrefFunc(aSetPrefFunc)
{
mOldVal = aGetPrefFunc();
aSetPrefFunc(aVal);
}
- ~ScopedGfxPref() {
+ ~ScopedGfxSetting() {
mSetPrefFunc(mOldVal);
}
private:
- void (*mSetPrefFunc)(T);
- T mOldVal;
+ void (*mSetPrefFunc)(SetArg);
+ Storage mOldVal;
};
#define SCOPED_GFX_PREF(prefBase, prefType, prefValue) \
- ScopedGfxPref<prefType> pref_##prefBase( \
+ ScopedGfxSetting<prefType, prefType> pref_##prefBase( \
&(gfxPrefs::prefBase), \
&(gfxPrefs::Set##prefBase), \
prefValue)
+#define SCOPED_GFX_VAR(varBase, varType, varValue) \
+ ScopedGfxSetting<const varType&, varType> var_##varBase( \
+ &(gfxVars::varBase), \
+ &(gfxVars::Set##varBase), \
+ varValue)
+
static TimeStamp GetStartupTime() {
static TimeStamp sStartupTime = TimeStamp::Now();
return sStartupTime;
}
class MockContentController : public GeckoContentController {
public:
MOCK_METHOD1(RequestContentRepaint, void(const FrameMetrics&));
--- a/gfx/layers/apz/test/gtest/TestEventRegions.cpp
+++ b/gfx/layers/apz/test/gtest/TestEventRegions.cpp
@@ -156,17 +156,17 @@ protected:
layers[3]->SetEventRegions(regions);
registration = MakeUnique<ScopedLayerTreeRegistration>(manager, LayersId{0}, root, mcc);
manager->UpdateHitTestingTree(LayersId{0}, root, false, LayersId{0}, 0);
}
};
TEST_F(APZEventRegionsTester, HitRegionImmediateResponse) {
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateEventRegionsLayerTree1();
TestAsyncPanZoomController* root = ApzcOf(layers[0]);
TestAsyncPanZoomController* left = ApzcOf(layers[1]);
TestAsyncPanZoomController* bottom = ApzcOf(layers[2]);
MockFunction<void(std::string checkPointName)> check;
@@ -223,17 +223,17 @@ TEST_F(APZEventRegionsTester, HitRegionA
// parent layer's hit region. Verify that it comes out of the APZC's
// content controller, which indicates the input events got routed correctly
// to the APZC.
EXPECT_CALL(*mcc, HandleTap(TapType::eSingleTap, _, _, rootApzc->GetGuid(), _)).Times(1);
Tap(manager, ScreenIntPoint(10, 160), TimeDuration::FromMilliseconds(100));
}
TEST_F(APZEventRegionsTester, Obscuration) {
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateObscuringLayerTree();
ScopedLayerTreeRegistration registration(manager, LayersId{0}, root, mcc);
manager->UpdateHitTestingTree(LayersId{0}, root, false, LayersId{0}, 0);
TestAsyncPanZoomController* parent = ApzcOf(layers[1]);
TestAsyncPanZoomController* child = ApzcOf(layers[2]);
--- a/gfx/layers/apz/test/gtest/TestHitTesting.cpp
+++ b/gfx/layers/apz/test/gtest/TestHitTesting.cpp
@@ -99,17 +99,17 @@ protected:
};
root = CreateLayerTree(layerTreeSyntax, layerVisibleRegion, nullptr, lm, layers);
SetScrollableFrameMetrics(layers[1], FrameMetrics::START_SCROLL_ID);
}
};
// A simple hit testing test that doesn't involve any transforms on layers.
TEST_F(APZHitTestingTester, HitTesting1) {
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateHitTesting1LayerTree();
ScopedLayerTreeRegistration registration(manager, LayersId{0}, root, mcc);
// No APZC attached so hit testing will return no APZC at (20,20)
RefPtr<AsyncPanZoomController> hit = GetTargetAPZC(ScreenPoint(20, 20));
TestAsyncPanZoomController* nullAPZC = nullptr;
EXPECT_EQ(nullAPZC, hit.get());
@@ -166,17 +166,17 @@ TEST_F(APZHitTestingTester, HitTesting1)
hit = GetTargetAPZC(ScreenPoint(-1000, 10));
EXPECT_EQ(nullAPZC, hit.get());
EXPECT_EQ(ScreenToParentLayerMatrix4x4(), transformToApzc);
EXPECT_EQ(ParentLayerToScreenMatrix4x4(), transformToGecko);
}
// A more involved hit testing test that involves css and async transforms.
TEST_F(APZHitTestingTester, HitTesting2) {
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
SCOPED_GFX_PREF(APZVelocityBias, float, 0.0); // Velocity bias can cause extra repaint requests
CreateHitTesting2LayerTree();
ScopedLayerTreeRegistration registration(manager, LayersId{0}, root, mcc);
manager->UpdateHitTestingTree(LayersId{0}, root, false, LayersId{0}, 0);
// At this point, the following holds (all coordinates in screen pixels):
@@ -277,17 +277,17 @@ TEST_F(APZHitTestingTester, HitTesting2)
EXPECT_EQ(apzcroot, hit.get());
// transformToApzc doesn't unapply the root's own async transform
EXPECT_EQ(ParentLayerPoint(25, 25), transformToApzc.TransformPoint(ScreenPoint(25, 25)));
// transformToGecko unapplies the full async transform of -100 pixels
EXPECT_EQ(ScreenPoint(25, 25), transformToGecko.TransformPoint(ParentLayerPoint(25, 25)));
}
TEST_F(APZHitTestingTester, HitTesting3) {
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
const char* layerTreeSyntax = "c(t)";
// LayerID 0 1
nsIntRegion layerVisibleRegions[] = {
nsIntRegion(IntRect(0,0,200,200)),
nsIntRegion(IntRect(0,0,50,50))
};
Matrix4x4 transforms[] = {
@@ -303,17 +303,17 @@ TEST_F(APZHitTestingTester, HitTesting3)
manager->UpdateHitTestingTree(LayersId{0}, root, false, LayersId{0}, 0);
RefPtr<AsyncPanZoomController> hit = GetTargetAPZC(ScreenPoint(75, 75));
EXPECT_EQ(ApzcOf(layers[1]), hit.get());
}
TEST_F(APZHitTestingTester, ComplexMultiLayerTree) {
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateComplexMultiLayerTree();
ScopedLayerTreeRegistration registration(manager, LayersId{0}, root, mcc);
manager->UpdateHitTestingTree(LayersId{0}, root, false, LayersId{0}, 0);
/* The layer tree looks like this:
0
--- a/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp
+++ b/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp
@@ -235,17 +235,17 @@ TEST_F(APZScrollHandoffTester, LayerStru
}
// Test that putting a second finger down on an APZC while a down-chain APZC
// is overscrolled doesn't result in being stuck in overscroll.
TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1073250) {
// Enable overscrolling.
SCOPED_GFX_PREF(APZOverscrollEnabled, bool, true);
SCOPED_GFX_PREF(APZFlingMinVelocityThreshold, float, 0.0f);
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateScrollHandoffLayerTree1();
TestAsyncPanZoomController* child = ApzcOf(layers[1]);
// Pan, causing the parent APZC to overscroll.
Pan(manager, 10, 40, PanOptions::KeepFingerDown);
EXPECT_FALSE(child->IsOverscrolled());
@@ -274,17 +274,17 @@ TEST_F(APZScrollHandoffTester, StuckInOv
// This is almost exactly like StuckInOverscroll_Bug1073250, except the
// APZC receiving the input events for the first touch block is the child
// (and thus not the same APZC that overscrolls, which is the parent).
TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1231228) {
// Enable overscrolling.
SCOPED_GFX_PREF(APZOverscrollEnabled, bool, true);
SCOPED_GFX_PREF(APZFlingMinVelocityThreshold, float, 0.0f);
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateScrollHandoffLayerTree1();
TestAsyncPanZoomController* child = ApzcOf(layers[1]);
// Pan, causing the parent APZC to overscroll.
Pan(manager, 60, 90, PanOptions::KeepFingerDown);
EXPECT_FALSE(child->IsOverscrolled());
@@ -342,17 +342,17 @@ TEST_F(APZScrollHandoffTester, StuckInOv
// Make sure nothing is overscrolled.
EXPECT_FALSE(child->IsOverscrolled());
EXPECT_FALSE(rootApzc->IsOverscrolled());
}
TEST_F(APZScrollHandoffTester, StuckInOverscroll_Bug1240202b) {
// Enable overscrolling.
SCOPED_GFX_PREF(APZOverscrollEnabled, bool, true);
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateScrollHandoffLayerTree1();
TestAsyncPanZoomController* child = ApzcOf(layers[1]);
// Pan, causing the parent APZC to overscroll.
Pan(manager, 60, 90, PanOptions::KeepFingerDown);
EXPECT_FALSE(child->IsOverscrolled());
@@ -406,17 +406,17 @@ TEST_F(APZScrollHandoffTester, OpposingC
EXPECT_FALSE(rootApzc->IsOverscrolled());
}
// Test that flinging in a direction where one component of the fling goes into
// overscroll but the other doesn't, results in just the one component being
// handed off to the parent, while the original APZC continues flinging in the
// other direction.
TEST_F(APZScrollHandoffTester, PartialFlingHandoff) {
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateScrollHandoffLayerTree1();
// Fling up and to the left. The child APZC has room to scroll up, but not
// to the left, so the horizontal component of the fling should be handed
// off to the parent APZC.
Pan(manager, ScreenIntPoint(90, 90), ScreenIntPoint(55, 55));
@@ -494,24 +494,24 @@ TEST_F(APZScrollHandoffTester, Scrollgra
// Check that it is the scrollgrab parent that's in a fling, not the child.
rootApzc->AssertStateIsFling();
childApzc->AssertStateIsReset();
}
TEST_F(APZScrollHandoffTester, ScrollgrabFlingAcceleration1) {
SCOPED_GFX_PREF(APZFlingMinVelocityThreshold, float, 0.0f);
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateScrollgrabLayerTree(true /* make parent scrollable */);
TestFlingAcceleration();
}
TEST_F(APZScrollHandoffTester, ScrollgrabFlingAcceleration2) {
SCOPED_GFX_PREF(APZFlingMinVelocityThreshold, float, 0.0f);
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
CreateScrollgrabLayerTree(false /* do not make parent scrollable */);
TestFlingAcceleration();
}
TEST_F(APZScrollHandoffTester, ImmediateHandoffDisallowed_Pan) {
SCOPED_GFX_PREF(APZAllowImmediateHandoff, bool, false);
CreateScrollHandoffLayerTree1();
--- a/gfx/layers/apz/test/gtest/TestSnapping.cpp
+++ b/gfx/layers/apz/test/gtest/TestSnapping.cpp
@@ -10,17 +10,17 @@
#include "InputUtils.h"
class APZCSnappingTester : public APZCTreeManagerTester
{
};
TEST_F(APZCSnappingTester, Bug1265510)
{
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
const char* layerTreeSyntax = "c(t)";
nsIntRegion layerVisibleRegion[] = {
nsIntRegion(IntRect(0, 0, 100, 100)),
nsIntRegion(IntRect(0, 100, 100, 100))
};
root = CreateLayerTree(layerTreeSyntax, layerVisibleRegion, nullptr, lm, layers);
SetScrollableFrameMetrics(root, FrameMetrics::START_SCROLL_ID, CSSRect(0, 0, 100, 200));
@@ -63,17 +63,17 @@ TEST_F(APZCSnappingTester, Bug1265510)
// However, the outer frame should also continue to the snap point, otherwise
// it is demonstrating incorrect behaviour by violating the mandatory snapping.
outer->AdvanceAnimationsUntilEnd();
EXPECT_EQ(100.0f, outer->GetCurrentAsyncScrollOffset(AsyncPanZoomController::AsyncTransformConsumer::eForHitTesting).y);
}
TEST_F(APZCSnappingTester, Snap_After_Pinch)
{
- SCOPED_GFX_PREF(WebRenderHitTest, bool, false);
+ SCOPED_GFX_VAR(UseWebRender, bool, false);
const char* layerTreeSyntax = "c";
nsIntRegion layerVisibleRegion[] = {
nsIntRegion(IntRect(0, 0, 100, 100)),
};
root = CreateLayerTree(layerTreeSyntax, layerVisibleRegion, nullptr, lm, layers);
SetScrollableFrameMetrics(root, FrameMetrics::START_SCROLL_ID, CSSRect(0, 0, 100, 200));
--- a/gfx/layers/wr/WebRenderCommandBuilder.cpp
+++ b/gfx/layers/wr/WebRenderCommandBuilder.cpp
@@ -1226,32 +1226,25 @@ WebRenderCommandBuilder::CreateWebRender
GP("actually entering the grouping code\n");
DoGroupingForDisplayList(aDisplayList, aWrappingItem, aDisplayListBuilder, aSc, aBuilder, aResources);
return;
}
mClipManager.BeginList(aSc);
bool apzEnabled = mManager->AsyncPanZoomEnabled();
- EventRegions eventRegions;
FlattenedDisplayItemIterator iter(aDisplayListBuilder, aDisplayList);
while (nsDisplayItem* i = iter.GetNext()) {
nsDisplayItem* item = i;
DisplayItemType itemType = item->GetType();
- // If the item is a event regions item, but is empty (has no regions in it)
- // then we should just throw it out
- if (itemType == DisplayItemType::TYPE_LAYER_EVENT_REGIONS) {
- nsDisplayLayerEventRegions* eventRegions =
- static_cast<nsDisplayLayerEventRegions*>(item);
- if (eventRegions->IsEmpty()) {
- continue;
- }
- }
+ // We should never get event regions items in WR now that we always have
+ // WR hit-testing enabled.
+ MOZ_ASSERT(itemType != DisplayItemType::TYPE_LAYER_EVENT_REGIONS);
// Peek ahead to the next item and try merging with it or swapping with it
// if necessary.
AutoTArray<nsDisplayItem*, 1> mergedItems;
mergedItems.AppendElement(item);
while (nsDisplayItem* peek = iter.PeekNext()) {
if (!item->CanMerge(peek)) {
break;
@@ -1281,66 +1274,27 @@ WebRenderCommandBuilder::CreateWebRender
// display item than previously, so we can't squash the display items
// into the same "layer".
const ActiveScrolledRoot* asr = item->GetActiveScrolledRoot();
if (asr != mLastAsr) {
mLastAsr = asr;
forceNewLayerData = true;
}
- // If we're creating a new layer data then flush whatever event regions
- // we've collected onto the old layer.
- if (forceNewLayerData && !eventRegions.IsEmpty()) {
- // If eventRegions is non-empty then we must have a layer data already,
- // because we (below) force one if we encounter an event regions item
- // with an empty layer data list. Additionally, the most recently
- // created layer data must have been created from an item whose ASR
- // is the same as the ASR on the event region items that were collapsed
- // into |eventRegions|. This is because any ASR change causes us to force
- // a new layer data which flushes the eventRegions.
- MOZ_ASSERT(!mLayerScrollData.empty());
- mLayerScrollData.back().AddEventRegions(eventRegions);
- eventRegions.SetEmpty();
- }
-
- // Collapse event region data into |eventRegions|, which will either be
- // empty, or filled with stuff from previous display items with the same
- // ASR.
- if (itemType == DisplayItemType::TYPE_LAYER_EVENT_REGIONS) {
- nsDisplayLayerEventRegions* regionsItem =
- static_cast<nsDisplayLayerEventRegions*>(item);
- int32_t auPerDevPixel = item->Frame()->PresContext()->AppUnitsPerDevPixel();
- EventRegions regions(
- regionsItem->HitRegion().ScaleToOutsidePixels(1.0f, 1.0f, auPerDevPixel),
- regionsItem->MaybeHitRegion().ScaleToOutsidePixels(1.0f, 1.0f, auPerDevPixel),
- regionsItem->DispatchToContentHitRegion().ScaleToOutsidePixels(1.0f, 1.0f, auPerDevPixel),
- regionsItem->NoActionRegion().ScaleToOutsidePixels(1.0f, 1.0f, auPerDevPixel),
- regionsItem->HorizontalPanRegion().ScaleToOutsidePixels(1.0f, 1.0f, auPerDevPixel),
- regionsItem->VerticalPanRegion().ScaleToOutsidePixels(1.0f, 1.0f, auPerDevPixel),
- /* mDTCRequiresTargetConfirmation = */ false);
-
- eventRegions.OrWith(regions);
- if (mLayerScrollData.empty()) {
- // If we don't have a layer data yet then create one because we will
- // need it to store this event region information.
- forceNewLayerData = true;
- }
- }
-
// If we're going to create a new layer data for this item, stash the
// ASR so that if we recurse into a sublist they will know where to stop
// walking up their ASR chain when building scroll metadata.
if (forceNewLayerData) {
mAsrStack.push_back(asr);
}
}
mClipManager.BeginItem(item, aSc);
- if (itemType != DisplayItemType::TYPE_LAYER_EVENT_REGIONS) {
+ { // scope restoreDoGrouping
AutoRestore<bool> restoreDoGrouping(mDoGrouping);
if (itemType == DisplayItemType::TYPE_SVG_WRAPPER) {
// Inside an <svg>, all display items that are not LAYER_ACTIVE wrapper
// display items (like animated transforms / opacity) share the same
// animated geometry root, so we can combine subsequent items of that
// type into the same image.
mDoGrouping = true;
GP("attempting to enter the grouping code\n");
@@ -1412,41 +1366,20 @@ WebRenderCommandBuilder::CreateWebRender
} else {
// This is the "simple" case where we don't need to create two
// WebRenderLayerScrollData items; we can just create one that also
// holds the deferred transform matrix, if any.
mLayerScrollData.emplace_back();
mLayerScrollData.back().Initialize(mManager->GetScrollData(), item,
descendants, stopAtAsr, deferred ? Some((*deferred)->GetTransform().GetMatrix()) : Nothing());
}
- } else if (mLayerScrollData.size() != layerCountBeforeRecursing &&
- !eventRegions.IsEmpty()) {
- // We are not forcing a new layer for |item|, but we did create some
- // layers while recursing. In this case, we need to make sure any
- // event regions that we were carrying end up on the right layer. So we
- // do an event region "flush" but retroactively; i.e. the event regions
- // end up on the layer that was mLayerScrollData.back() prior to the
- // recursion.
- MOZ_ASSERT(layerCountBeforeRecursing > 0);
- mLayerScrollData[layerCountBeforeRecursing - 1].AddEventRegions(eventRegions);
- eventRegions.SetEmpty();
}
}
}
- // If we have any event region info left over we need to flush it before we
- // return. Again, at this point the layer data list must be non-empty, and
- // the most recently created layer data will have been created by an item
- // with matching ASRs.
- if (!eventRegions.IsEmpty()) {
- MOZ_ASSERT(apzEnabled);
- MOZ_ASSERT(!mLayerScrollData.empty());
- mLayerScrollData.back().AddEventRegions(eventRegions);
- }
-
mClipManager.EndList(aSc);
}
void
WebRenderCommandBuilder::PushOverrideForASR(const ActiveScrolledRoot* aASR,
const Maybe<wr::WrClipId>& aClipId)
{
mClipManager.PushOverrideForASR(aASR, aClipId);
--- a/gfx/thebes/gfxPrefs.h
+++ b/gfx/thebes/gfxPrefs.h
@@ -512,17 +512,16 @@ private:
DECL_GFX_PREF(Once, "gfx.webrender.all", WebRenderAll, bool, false);
DECL_GFX_PREF(Once, "gfx.webrender.all.qualified", WebRenderAllQualified, bool, false);
DECL_GFX_PREF(Once, "gfx.webrender.async-scene-build", WebRenderAsyncSceneBuild, bool, true);
DECL_GFX_PREF(Once, "gfx.webrender.enabled", WebRenderEnabledDoNotUseDirectly, bool, false);
DECL_GFX_PREF(Live, "gfx.webrender.blob-images", WebRenderBlobImages, bool, true);
DECL_GFX_PREF(Live, "gfx.webrender.blob.invalidation", WebRenderBlobInvalidation, bool, false);
DECL_GFX_PREF(Live, "gfx.webrender.highlight-painted-layers",WebRenderHighlightPaintedLayers, bool, false);
- DECL_GFX_PREF(Live, "gfx.webrender.hit-test", WebRenderHitTest, bool, true);
// Use vsync events generated by hardware
DECL_GFX_PREF(Once, "gfx.work-around-driver-bugs", WorkAroundDriverBugs, bool, true);
DECL_GFX_PREF(Live, "gl.ignore-dx-interop2-blacklist", IgnoreDXInterop2Blacklist, bool, false);
DECL_GFX_PREF(Live, "gl.msaa-level", MSAALevel, uint32_t, 2);
#if defined(XP_MACOSX)
DECL_GFX_PREF(Live, "gl.multithreaded", GLMultithreaded, bool, false);
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -1030,21 +1030,18 @@ nsDisplayListBuilder::nsDisplayListBuild
mHitTestIsForVisibility(false),
mIsBuilding(false),
mInInvalidSubtree(false),
mDisablePartialUpdates(false),
mPartialBuildFailed(false)
{
MOZ_COUNT_CTOR(nsDisplayListBuilder);
- const bool useWRHitTest =
- gfxPrefs::WebRenderHitTest() && gfxVars::UseWebRender();
-
mBuildCompositorHitTestInfo = mAsyncPanZoomEnabled && IsForPainting() &&
- (useWRHitTest || gfxPrefs::SimpleEventRegionItems());
+ (gfxVars::UseWebRender() || gfxPrefs::SimpleEventRegionItems());
mLessEventRegionItems = gfxPrefs::LessEventRegionItems();
nsPresContext* pc = aReferenceFrame->PresContext();
nsIPresShell *shell = pc->PresShell();
if (pc->IsRenderingOnlySelection()) {
nsCOMPtr<nsISelectionController> selcon(do_QueryInterface(shell));
if (selcon) {
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -868,17 +868,16 @@ pref("gfx.webrender.program-binary-disk"
#ifdef XP_MACOSX
pref("gfx.compositor.glcontext.opaque", false);
#endif
pref("gfx.webrender.highlight-painted-layers", false);
pref("gfx.webrender.async-scene-build", true);
pref("gfx.webrender.blob-images", true);
pref("gfx.webrender.blob.invalidation", true);
-pref("gfx.webrender.hit-test", true);
// WebRender debugging utilities.
pref("gfx.webrender.debug.texture-cache", false);
pref("gfx.webrender.debug.render-targets", false);
pref("gfx.webrender.debug.alpha-primitives", false);
pref("gfx.webrender.debug.profiler", false);
pref("gfx.webrender.debug.gpu-time-queries", false);
pref("gfx.webrender.debug.gpu-sample-queries", false);