[Cairo] Gradient::fill() should only operate on PlatformContextCairo
authorzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 21 Nov 2017 13:35:04 +0000 (13:35 +0000)
committerzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 21 Nov 2017 13:35:04 +0000 (13:35 +0000)
https://bugs.webkit.org/show_bug.cgi?id=179887

Reviewed by Carlos Garcia Campos.

In Gradient::fill(), directly invoke Cairo::save() and Cairo::restore(),
instead of doing so indirectly through GraphicsContext::save() and
GraphicsContext::restore(). The latter pair stashes the internal state
that's managed in GraphicsContext, but that doesn't get modified at all
in this case.

No new tests -- no change in behavior.

* platform/graphics/cairo/GradientCairo.cpp:
(WebCore::Gradient::fill):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225075 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/cairo/GradientCairo.cpp

index 9920f45..958558f 100644 (file)
@@ -1,3 +1,21 @@
+2017-11-21  Zan Dobersek  <zdobersek@igalia.com>
+
+        [Cairo] Gradient::fill() should only operate on PlatformContextCairo
+        https://bugs.webkit.org/show_bug.cgi?id=179887
+
+        Reviewed by Carlos Garcia Campos.
+
+        In Gradient::fill(), directly invoke Cairo::save() and Cairo::restore(),
+        instead of doing so indirectly through GraphicsContext::save() and
+        GraphicsContext::restore(). The latter pair stashes the internal state
+        that's managed in GraphicsContext, but that doesn't get modified at all
+        in this case.
+
+        No new tests -- no change in behavior.
+
+        * platform/graphics/cairo/GradientCairo.cpp:
+        (WebCore::Gradient::fill):
+
 2017-11-21  Frederic Wang  <fwang@igalia.com>
 
         Remove unintentionally committed .orig file.
index 5126b19..af36e43 100644 (file)
@@ -83,12 +83,13 @@ cairo_pattern_t* Gradient::createPlatformGradient(float globalAlpha)
 
 void Gradient::fill(GraphicsContext& context, const FloatRect& rect)
 {
-    RefPtr<cairo_pattern_t> platformGradient = adoptRef(createPlatformGradient(1.0));
-
-    context.save();
     ASSERT(context.hasPlatformContext());
-    Cairo::fillRect(*context.platformContext(), rect, platformGradient.get());
-    context.restore();
+    auto& platformContext = *context.platformContext();
+
+    RefPtr<cairo_pattern_t> platformGradient = adoptRef(createPlatformGradient(1.0));
+    Cairo::save(platformContext);
+    Cairo::fillRect(platformContext, rect, platformGradient.get());
+    Cairo::restore(platformContext);
 }
 
 } // namespace WebCore