Diff
Modified: trunk/Source/WebCore/ChangeLog (279712 => 279713)
--- trunk/Source/WebCore/ChangeLog 2021-07-08 06:53:01 UTC (rev 279712)
+++ trunk/Source/WebCore/ChangeLog 2021-07-08 07:23:20 UTC (rev 279713)
@@ -1,3 +1,32 @@
+2021-07-08 Fujii Hironori <[email protected]>
+
+ Merge Cairo::save and Cairo::restore into GraphicsContextCairo's methods
+ https://bugs.webkit.org/show_bug.cgi?id=227784
+
+ Reviewed by Žan Doberšek.
+
+ Cairo::save and Cairo::restore should be GraphicsContextCairo's
+ methods.
+
+ * platform/graphics/cairo/CairoOperations.cpp:
+ (WebCore::Cairo::fillShadowBuffer):
+ (WebCore::Cairo::save): Deleted.
+ (WebCore::Cairo::restore): Deleted.
+ * platform/graphics/cairo/CairoOperations.h:
+ * platform/graphics/cairo/GradientCairo.cpp:
+ (WebCore::Gradient::fill):
+ * platform/graphics/cairo/GraphicsContextCairo.cpp:
+ (WebCore::GraphicsContextCairo::save):
+ (WebCore::GraphicsContextCairo::restore):
+ (WebCore::GraphicsContextCairo::fillRect):
+ (WebCore::GraphicsContextCairo::saveInternal): Deleted.
+ (WebCore::GraphicsContextCairo::restoreInternal): Deleted.
+ * platform/graphics/cairo/GraphicsContextCairo.h:
+ * platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:
+ (Nicosia::CairoOperationRecorder::fillRect):
+ (Nicosia::CairoOperationRecorder::save):
+ (Nicosia::CairoOperationRecorder::restore):
+
2021-07-07 Cameron McCormack <[email protected]>
Add logging for GraphicsLayerCA::m_uncommittedChanges
Modified: trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp (279712 => 279713)
--- trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp 2021-07-08 06:53:01 UTC (rev 279712)
+++ trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp 2021-07-08 07:23:20 UTC (rev 279713)
@@ -190,7 +190,7 @@
static void fillShadowBuffer(GraphicsContextCairo& platformContext, ImageBuffer& layerImage, const FloatPoint& layerOrigin, const FloatSize& layerSize, const ShadowState& shadowState)
{
- save(platformContext);
+ platformContext.save();
if (auto nativeImage = layerImage.copyNativeImage(DontCopyBackingStore))
clipToImageBuffer(platformContext, nativeImage->platformImage().get(), FloatRect(layerOrigin, expandedIntSize(layerSize)));
@@ -200,7 +200,7 @@
fillSource.color = shadowState.color;
fillRect(platformContext, FloatRect(layerOrigin, expandedIntSize(layerSize)), fillSource, ShadowState());
- restore(platformContext);
+ platformContext.restore();
}
static inline void drawPathShadow(GraphicsContextCairo& platformContext, const FillSource& fillSource, const StrokeSource& strokeSource, const ShadowState& shadowState, PathDrawingStyle drawingStyle)
@@ -1178,22 +1178,6 @@
drawFocusRing(platformContext, path, width, color);
}
-void save(GraphicsContextCairo& platformContext)
-{
- platformContext.saveInternal();
-
- if (auto* graphicsContextPrivate = platformContext.graphicsContextPrivate())
- graphicsContextPrivate->save();
-}
-
-void restore(GraphicsContextCairo& platformContext)
-{
- platformContext.restoreInternal();
-
- if (auto* graphicsContextPrivate = platformContext.graphicsContextPrivate())
- graphicsContextPrivate->restore();
-}
-
void translate(GraphicsContextCairo& platformContext, float x, float y)
{
cairo_translate(platformContext.cr(), x, y);
Modified: trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.h (279712 => 279713)
--- trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.h 2021-07-08 06:53:01 UTC (rev 279712)
+++ trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.h 2021-07-08 07:23:20 UTC (rev 279713)
@@ -155,9 +155,6 @@
void drawFocusRing(GraphicsContextCairo&, const Path&, float, const Color&);
void drawFocusRing(GraphicsContextCairo&, const Vector<FloatRect>&, float, const Color&);
-void save(GraphicsContextCairo&);
-void restore(GraphicsContextCairo&);
-
void translate(GraphicsContextCairo&, float, float);
void rotate(GraphicsContextCairo&, float);
void scale(GraphicsContextCairo&, const FloatSize&);
Modified: trunk/Source/WebCore/platform/graphics/cairo/GradientCairo.cpp (279712 => 279713)
--- trunk/Source/WebCore/platform/graphics/cairo/GradientCairo.cpp 2021-07-08 06:53:01 UTC (rev 279712)
+++ trunk/Source/WebCore/platform/graphics/cairo/GradientCairo.cpp 2021-07-08 07:23:20 UTC (rev 279713)
@@ -246,9 +246,9 @@
ASSERT(context.hasPlatformContext());
auto& platformContext = *context.platformContext();
- Cairo::save(platformContext);
+ platformContext.save();
Cairo::fillRect(platformContext, rect, pattern.get());
- Cairo::restore(platformContext);
+ platformContext.restore();
}
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp (279712 => 279713)
--- trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp 2021-07-08 06:53:01 UTC (rev 279712)
+++ trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp 2021-07-08 07:23:20 UTC (rev 279713)
@@ -102,7 +102,13 @@
void GraphicsContextCairo::save()
{
GraphicsContext::save();
- Cairo::save(*this);
+
+ m_cairoStateStack.append(CairoState());
+ m_cairoState = &m_cairoStateStack.last();
+
+ cairo_save(m_cr.get());
+
+ m_private->save();
}
void GraphicsContextCairo::restore()
@@ -111,7 +117,27 @@
return;
GraphicsContext::restore();
- Cairo::restore(*this);
+
+ if (m_cairoStateStack.isEmpty())
+ return;
+
+ if (m_cairoState->m_mask.pattern) {
+ cairo_pop_group_to_source(m_cr.get());
+
+ cairo_matrix_t matrix;
+ cairo_get_matrix(m_cr.get(), &matrix);
+ cairo_set_matrix(m_cr.get(), &m_cairoState->m_mask.matrix);
+ cairo_mask(m_cr.get(), m_cairoState->m_mask.pattern.get());
+ cairo_set_matrix(m_cr.get(), &matrix);
+ }
+
+ m_cairoStateStack.removeLast();
+ ASSERT(!m_cairoStateStack.isEmpty());
+ m_cairoState = &m_cairoStateStack.last();
+
+ cairo_restore(m_cr.get());
+
+ m_private->restore();
}
// Draws a filled rectangle with a stroked border.
@@ -181,9 +207,9 @@
if (!pattern)
return;
- Cairo::save(*this);
+ save();
Cairo::fillRect(*this, rect, pattern.get());
- Cairo::restore(*this);
+ restore();
}
void GraphicsContextCairo::fillRect(const FloatRect& rect, const Color& color, CompositeOperator compositeOperator, BlendMode blendMode)
@@ -428,36 +454,6 @@
return m_layers;
}
-void GraphicsContextCairo::saveInternal()
-{
- m_cairoStateStack.append(CairoState());
- m_cairoState = &m_cairoStateStack.last();
-
- cairo_save(m_cr.get());
-}
-
-void GraphicsContextCairo::restoreInternal()
-{
- if (m_cairoStateStack.isEmpty())
- return;
-
- if (m_cairoState->m_mask.pattern) {
- cairo_pop_group_to_source(m_cr.get());
-
- cairo_matrix_t matrix;
- cairo_get_matrix(m_cr.get(), &matrix);
- cairo_set_matrix(m_cr.get(), &m_cairoState->m_mask.matrix);
- cairo_mask(m_cr.get(), m_cairoState->m_mask.pattern.get());
- cairo_set_matrix(m_cr.get(), &matrix);
- }
-
- m_cairoStateStack.removeLast();
- ASSERT(!m_cairoStateStack.isEmpty());
- m_cairoState = &m_cairoStateStack.last();
-
- cairo_restore(m_cr.get());
-}
-
void GraphicsContextCairo::pushImageMask(cairo_surface_t* surface, const FloatRect& rect)
{
// We must call savePlatformState at least once before we can use image masking,
Modified: trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.h (279712 => 279713)
--- trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.h 2021-07-08 06:53:01 UTC (rev 279712)
+++ trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.h 2021-07-08 07:23:20 UTC (rev 279713)
@@ -114,8 +114,6 @@
cairo_t* cr() const;
Vector<float>& layers();
- void saveInternal();
- void restoreInternal();
void pushImageMask(cairo_surface_t*, const FloatRect&);
GraphicsContextPlatformPrivate* graphicsContextPrivate();
Modified: trunk/Source/WebCore/platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp (279712 => 279713)
--- trunk/Source/WebCore/platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp 2021-07-08 06:53:01 UTC (rev 279712)
+++ trunk/Source/WebCore/platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp 2021-07-08 07:23:20 UTC (rev 279713)
@@ -280,9 +280,9 @@
void execute(PaintingOperationReplay& replayer) override
{
auto& platformContext = contextForReplay(replayer);
- Cairo::save(platformContext);
+ platformContext.save();
Cairo::fillRect(platformContext, arg<0>(), arg<1>().get());
- Cairo::restore(platformContext);
+ platformContext.restore();
}
void dump(TextStream& ts) override
@@ -744,7 +744,7 @@
void execute(PaintingOperationReplay& replayer) override
{
- Cairo::save(contextForReplay(replayer));
+ contextForReplay(replayer).save();
}
void dump(TextStream& ts) override
@@ -767,7 +767,7 @@
void execute(PaintingOperationReplay& replayer) override
{
- Cairo::restore(contextForReplay(replayer));
+ contextForReplay(replayer).restore();
}
void dump(TextStream& ts) override