Bug 1224207 - Part 5. Fine tune nsFilterInstance::BuildSourcePaint. draft
authorcku <cku@mozilla.com>
Tue, 24 Jan 2017 23:10:31 +0800
changeset 480544 d6b809537fbfe97a4e24a2d17c60e6101e8a997b
parent 480543 5f7fe78d2f6a35d53871d4352594785c6e8ee962
child 480545 9c527027a72f76807f3f5a962429f41050bb5f8f
push id44575
push userbmo:cku@mozilla.com
push dateWed, 08 Feb 2017 13:39:48 +0000
bugs1224207
milestone54.0a1
Bug 1224207 - Part 5. Fine tune nsFilterInstance::BuildSourcePaint. 1. Rename gfx->sourceCtx. 2. Since sourceCtx is discarded immidiately, there is no need of save/restore. MozReview-Commit-ID: CM2MMBYWp3W
layout/svg/nsFilterInstance.cpp
--- a/layout/svg/nsFilterInstance.cpp
+++ b/layout/svg/nsFilterInstance.cpp
@@ -378,33 +378,31 @@ nsFilterInstance::BuildSourcePaint(Sourc
   DebugOnly<bool> invertible = deviceToFilterSpace.Invert();
   MOZ_ASSERT(invertible,
              "The returning matix of GetFilterSpaceToDeviceSpaceTransform must"
              "be an invertible matrix(not a singular one), since we already"
              "checked it and early return if it's not from the caller side"
              "(nsFilterInstance::Render)");
 
   if (!mPaintTransform.IsSingular()) {
-    RefPtr<gfxContext> gfx = gfxContext::CreateOrNull(offscreenDT);
-    MOZ_ASSERT(gfx); // already checked the draw target above
-    gfx->Save();
-    gfx->Multiply(mPaintTransform *
+    RefPtr<gfxContext> sourceCtx = gfxContext::CreateOrNull(offscreenDT);
+    MOZ_ASSERT(sourceCtx); // already checked the draw target above
+    sourceCtx->Multiply(mPaintTransform *
                   deviceToFilterSpace *
                   gfxMatrix::Translation(-neededRect.TopLeft()));
     GeneralPattern pattern;
     if (aSource == &mFillPaint) {
-      nsSVGUtils::MakeFillPatternFor(mTargetFrame, gfx, &pattern);
+      nsSVGUtils::MakeFillPatternFor(mTargetFrame, sourceCtx, &pattern);
     } else if (aSource == &mStrokePaint) {
-      nsSVGUtils::MakeStrokePatternFor(mTargetFrame, gfx, &pattern);
+      nsSVGUtils::MakeStrokePatternFor(mTargetFrame, sourceCtx, &pattern);
     }
     if (pattern.GetPattern()) {
       offscreenDT->FillRect(ToRect(FilterSpaceToUserSpace(ThebesRect(neededRect))),
                             pattern);
     }
-    gfx->Restore();
   }
 
   aSource->mSourceSurface = offscreenDT->Snapshot();
   aSource->mSurfaceRect = neededRect;
 
   return DrawResult::SUCCESS;
 }