Bug 1186025. Optimize the usage of regions. r=mstange
authorJeff Muizelaar <jmuizelaar@mozilla.com>
Tue, 21 Jul 2015 10:54:44 -0400
changeset 253961 1ee54e043b9b05d69e6a9f981aa6c4ef0dd65be3
parent 253960 d756733ac4c451b8ed7e0763350b1ce13ab10ba5
child 253962 939320b957c588ad809e9b4a64b7f232dd4d9b72
push id62613
push userjmuizelaar@mozilla.com
push dateTue, 21 Jul 2015 21:48:38 +0000
treeherdermozilla-inbound@1ee54e043b9b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmstange
bugs1186025
milestone42.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1186025. Optimize the usage of regions. r=mstange This eliminates a bad idiom in some places.
gfx/layers/composite/TextureHost.cpp
ipc/ipdl/test/cxx/TestDataStructures.cpp
layout/base/nsDisplayList.cpp
view/nsViewManager.cpp
--- a/gfx/layers/composite/TextureHost.cpp
+++ b/gfx/layers/composite/TextureHost.cpp
@@ -402,17 +402,17 @@ BufferTextureHost::~BufferTextureHost()
 
 void
 BufferTextureHost::UpdatedInternal(const nsIntRegion* aRegion)
 {
   ++mUpdateSerial;
   // If the last frame wasn't uploaded yet, and we -don't- have a partial update,
   // we still need to update the full surface.
   if (aRegion && !mNeedsFullUpdate) {
-    mMaybeUpdatedRegion = mMaybeUpdatedRegion.Or(mMaybeUpdatedRegion, *aRegion);
+    mMaybeUpdatedRegion.OrWith(*aRegion);
   } else {
     mNeedsFullUpdate = true;
   }
   if (GetFlags() & TextureFlags::IMMEDIATE_UPLOAD) {
     DebugOnly<bool> result = MaybeUpload(!mNeedsFullUpdate ? &mMaybeUpdatedRegion : nullptr);
     NS_WARN_IF_FALSE(result, "Failed to upload a texture");
   }
 }
--- a/ipc/ipdl/test/cxx/TestDataStructures.cpp
+++ b/ipc/ipdl/test/cxx/TestDataStructures.cpp
@@ -966,17 +966,17 @@ TestDataStructuresChild::Test18()
     RegionArray ra;
     // big enough to hopefully force a realloc to a different chunk of
     // memory on the receiving side, if the workaround isn't working
     // correctly.  But SetCapacity() here because we don't want to
     // crash on the sending side.
     ra.SetCapacity(nelements);
     for (int i = 0; i < nelements; ++i) {
         nsIntRegion r;
-        r = r.Or(nsIntRect(0, 0, 10, 10), nsIntRect(10, 10, 10, 10));
+        r.Or(nsIntRect(0, 0, 10, 10), nsIntRect(10, 10, 10, 10));
         ra.AppendElement(r);
     }
 
     if (!SendTest18(ra))
         fail("sending Test18");
 
     printf("  passed %s\n", __FUNCTION__);
 }
--- a/layout/base/nsDisplayList.cpp
+++ b/layout/base/nsDisplayList.cpp
@@ -3490,18 +3490,18 @@ nsDisplayBoxShadowOuter::ComputeInvalida
     nscoord dontCare[8];
     bool hasBorderRadius = mFrame->GetBorderRadii(dontCare);
     if (hasBorderRadius) {
       // If we have rounded corners then we need to invalidate the frame area
       // too since we paint into it.
       oldShadow = geometry->mBounds;
       newShadow = GetBounds(aBuilder, &snap);
     } else {
-      oldShadow = oldShadow.Sub(geometry->mBounds, geometry->mBorderRect);
-      newShadow = newShadow.Sub(GetBounds(aBuilder, &snap), GetBorderRect());
+      oldShadow.Sub(geometry->mBounds, geometry->mBorderRect);
+      newShadow.Sub(GetBounds(aBuilder, &snap), GetBorderRect());
     }
     aInvalidRegion->Or(oldShadow, newShadow);
   }
 }
 
 
 void
 nsDisplayBoxShadowInner::Paint(nsDisplayListBuilder* aBuilder,
--- a/view/nsViewManager.cpp
+++ b/view/nsViewManager.cpp
@@ -482,17 +482,17 @@ void nsViewManager::FlushDirtyRegionToWi
   }
   nsRegion r =
     ConvertRegionBetweenViews(*dirtyRegion, aView, nearestViewWithWidget);
 
   // If we draw the frame counter we need to make sure we invalidate the area
   // for it to make it on screen
   if (gfxPrefs::DrawFrameCounter()) {
     nsRect counterBounds = ToAppUnits(gfxPlatform::FrameCounterBounds(), AppUnitsPerDevPixel());
-    r = r.Or(r, counterBounds);
+    r.OrWith(counterBounds);
   }
 
   nsViewManager* widgetVM = nearestViewWithWidget->GetViewManager();
   widgetVM->InvalidateWidgetArea(nearestViewWithWidget, r);
   dirtyRegion->SetEmpty();
 }
 
 void