<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[286864] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/286864">286864</a></dd>
<dt>Author</dt> <dd>said@apple.com</dd>
<dt>Date</dt> <dd>2021-12-10 11:26:37 -0800 (Fri, 10 Dec 2021)</dd>
</dl>
<h3>Log Message</h3>
<pre>[GPU Process] [Filters] Make FilterEffectVector a Vector of Ref<FilterEffect>
https://bugs.webkit.org/show_bug.cgi?id=234108
Reviewed by Cameron McCormack.
Source/WebCore:
There is no case that would require inserting a nullptr in FilterEffectVector.
* platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::drawFilteredImageBuffer):
* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::inputEffect const):
* platform/graphics/filters/FilterEffect.h:
* platform/graphics/filters/FilterEffectVector.h:
* platform/graphics/filters/SourceAlpha.cpp:
(WebCore::SourceAlpha::SourceAlpha):
* rendering/CSSFilter.cpp:
(WebCore::CSSFilter::buildFilterFunctions):
(WebCore::CSSFilter::effectsOfType const):
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::primitiveAttributeChanged):
* svg/SVGFEBlendElement.cpp:
(WebCore::SVGFEBlendElement::build const):
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::build const):
* svg/SVGFEComponentTransferElement.cpp:
(WebCore::SVGFEComponentTransferElement::build const):
* svg/SVGFECompositeElement.cpp:
(WebCore::SVGFECompositeElement::build const):
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::build const):
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::build const):
* svg/SVGFEDisplacementMapElement.cpp:
(WebCore::SVGFEDisplacementMapElement::build const):
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::build const):
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::build const):
* svg/SVGFEMergeElement.cpp:
(WebCore::SVGFEMergeElement::build const):
* svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::build const):
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::build const):
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::build const):
* svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::build const):
* svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::effectsOfType const):
* svg/graphics/filters/SVGFilterBuilder.cpp:
(WebCore::SVGFilterBuilder::clearResultsRecursive):
(WebCore::SVGFilterBuilder::buildEffectExpression const):
(WebCore::SVGFilterBuilder::buildExpression const):
* svg/graphics/filters/SVGFilterBuilder.h:
(WebCore::SVGFilterBuilder::effectReferences):
Source/WebKit:
* GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::drawFilteredImageBuffer):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsdisplaylistsDisplayListRecordercpp">trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFilterEffectcpp">trunk/Source/WebCore/platform/graphics/filters/FilterEffect.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFilterEffecth">trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFilterEffectVectorh">trunk/Source/WebCore/platform/graphics/filters/FilterEffectVector.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersSourceAlphacpp">trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingCSSFiltercpp">trunk/Source/WebCore/rendering/CSSFilter.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGResourceFiltercpp">trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEBlendElementcpp">trunk/Source/WebCore/svg/SVGFEBlendElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEColorMatrixElementcpp">trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEComponentTransferElementcpp">trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFECompositeElementcpp">trunk/Source/WebCore/svg/SVGFECompositeElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEConvolveMatrixElementcpp">trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDiffuseLightingElementcpp">trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDisplacementMapElementcpp">trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDropShadowElementcpp">trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEGaussianBlurElementcpp">trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMergeElementcpp">trunk/Source/WebCore/svg/SVGFEMergeElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMorphologyElementcpp">trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEOffsetElementcpp">trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFESpecularLightingElementcpp">trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFETileElementcpp">trunk/Source/WebCore/svg/SVGFETileElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsfiltersSVGFiltercpp">trunk/Source/WebCore/svg/graphics/filters/SVGFilter.cpp</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsfiltersSVGFilterBuildercpp">trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsfiltersSVGFilterBuilderh">trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitGPUProcessgraphicsRemoteDisplayListRecordercpp">trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/ChangeLog 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+2021-12-10 Said Abou-Hallawa <said@apple.com>
+
+ [GPU Process] [Filters] Make FilterEffectVector a Vector of Ref<FilterEffect>
+ https://bugs.webkit.org/show_bug.cgi?id=234108
+
+ Reviewed by Cameron McCormack.
+
+ There is no case that would require inserting a nullptr in FilterEffectVector.
+
+ * platform/graphics/displaylists/DisplayListRecorder.cpp:
+ (WebCore::DisplayList::Recorder::drawFilteredImageBuffer):
+ * platform/graphics/filters/FilterEffect.cpp:
+ (WebCore::FilterEffect::inputEffect const):
+ * platform/graphics/filters/FilterEffect.h:
+ * platform/graphics/filters/FilterEffectVector.h:
+ * platform/graphics/filters/SourceAlpha.cpp:
+ (WebCore::SourceAlpha::SourceAlpha):
+ * rendering/CSSFilter.cpp:
+ (WebCore::CSSFilter::buildFilterFunctions):
+ (WebCore::CSSFilter::effectsOfType const):
+ * rendering/svg/RenderSVGResourceFilter.cpp:
+ (WebCore::RenderSVGResourceFilter::primitiveAttributeChanged):
+ * svg/SVGFEBlendElement.cpp:
+ (WebCore::SVGFEBlendElement::build const):
+ * svg/SVGFEColorMatrixElement.cpp:
+ (WebCore::SVGFEColorMatrixElement::build const):
+ * svg/SVGFEComponentTransferElement.cpp:
+ (WebCore::SVGFEComponentTransferElement::build const):
+ * svg/SVGFECompositeElement.cpp:
+ (WebCore::SVGFECompositeElement::build const):
+ * svg/SVGFEConvolveMatrixElement.cpp:
+ (WebCore::SVGFEConvolveMatrixElement::build const):
+ * svg/SVGFEDiffuseLightingElement.cpp:
+ (WebCore::SVGFEDiffuseLightingElement::build const):
+ * svg/SVGFEDisplacementMapElement.cpp:
+ (WebCore::SVGFEDisplacementMapElement::build const):
+ * svg/SVGFEDropShadowElement.cpp:
+ (WebCore::SVGFEDropShadowElement::build const):
+ * svg/SVGFEGaussianBlurElement.cpp:
+ (WebCore::SVGFEGaussianBlurElement::build const):
+ * svg/SVGFEMergeElement.cpp:
+ (WebCore::SVGFEMergeElement::build const):
+ * svg/SVGFEMorphologyElement.cpp:
+ (WebCore::SVGFEMorphologyElement::build const):
+ * svg/SVGFEOffsetElement.cpp:
+ (WebCore::SVGFEOffsetElement::build const):
+ * svg/SVGFESpecularLightingElement.cpp:
+ (WebCore::SVGFESpecularLightingElement::build const):
+ * svg/SVGFETileElement.cpp:
+ (WebCore::SVGFETileElement::build const):
+ * svg/graphics/filters/SVGFilter.cpp:
+ (WebCore::SVGFilter::effectsOfType const):
+ * svg/graphics/filters/SVGFilterBuilder.cpp:
+ (WebCore::SVGFilterBuilder::clearResultsRecursive):
+ (WebCore::SVGFilterBuilder::buildEffectExpression const):
+ (WebCore::SVGFilterBuilder::buildExpression const):
+ * svg/graphics/filters/SVGFilterBuilder.h:
+ (WebCore::SVGFilterBuilder::effectReferences):
+
</ins><span class="cx"> 2021-12-10 Devin Rousso <drousso@apple.com>
</span><span class="cx">
</span><span class="cx"> Add a way to write a `SharedBuffer` to the Pasteboard
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsdisplaylistsDisplayListRecordercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> for (auto& effect : filter.effectsOfType(FilterEffect::Type::FEImage)) {
</span><del>- bool isRecorded = WTF::switchOn(downcast<FEImage>(effect.get())->sourceImage(),
</del><ins>+ bool isRecorded = WTF::switchOn(downcast<FEImage>(effect.get()).sourceImage(),
</ins><span class="cx"> [&] (const Ref<Image>& image) {
</span><span class="cx"> if (auto nativeImage = image->nativeImage()) {
</span><span class="cx"> recordResourceUse(*nativeImage);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFilterEffectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FilterEffect.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FilterEffect.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterEffect.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -147,10 +147,10 @@
</span><span class="cx"> return m_filterImage;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-FilterEffect* FilterEffect::inputEffect(unsigned number) const
</del><ins>+FilterEffect& FilterEffect::inputEffect(unsigned number) const
</ins><span class="cx"> {
</span><span class="cx"> ASSERT_WITH_SECURITY_IMPLICATION(number < m_inputEffects.size());
</span><del>- return m_inputEffects.at(number).get();
</del><ins>+ return m_inputEffects.at(number);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void FilterEffect::clearResult()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFilterEffecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> FilterImageVector takeImageInputs(FilterImageVector& stack) const;
</span><span class="cx">
</span><span class="cx"> FilterEffectVector& inputEffects() { return m_inputEffects; }
</span><del>- FilterEffect* inputEffect(unsigned) const;
</del><ins>+ FilterEffect& inputEffect(unsigned) const;
</ins><span class="cx">
</span><span class="cx"> RefPtr<FilterImage> apply(const Filter&, const FilterImageVector& inputs, const std::optional<FilterEffectGeometry>& = std::nullopt);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFilterEffectVectorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FilterEffectVector.h (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FilterEffectVector.h 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterEffectVector.h 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -31,6 +31,6 @@
</span><span class="cx">
</span><span class="cx"> class FilterEffect;
</span><span class="cx">
</span><del>-using FilterEffectVector = Vector<RefPtr<FilterEffect>>;
</del><ins>+using FilterEffectVector = Vector<Ref<FilterEffect>>;
</ins><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersSourceAlphacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> : FilterEffect(FilterEffect::Type::SourceAlpha)
</span><span class="cx"> {
</span><span class="cx"> setOperatingColorSpace(sourceEffect.operatingColorSpace());
</span><del>- inputEffects().append(&sourceEffect);
</del><ins>+ inputEffects().append(sourceEffect);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> std::unique_ptr<FilterEffectApplier> SourceAlpha::createApplier(const Filter&) const
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingCSSFiltercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/CSSFilter.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/CSSFilter.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/rendering/CSSFilter.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -315,7 +315,7 @@
</span><span class="cx">
</span><span class="cx"> if (effect) {
</span><span class="cx"> effect->setOperatingColorSpace(DestinationColorSpace::SRGB());
</span><del>- effect->inputEffects() = { WTFMove(previousEffect) };
</del><ins>+ effect->inputEffects() = { previousEffect.releaseNonNull() };
</ins><span class="cx"> m_functions.append({ *effect });
</span><span class="cx"> previousEffect = WTFMove(effect);
</span><span class="cx"> }
</span><span class="lines">@@ -353,7 +353,7 @@
</span><span class="cx">
</span><span class="cx"> for (auto& function : m_functions) {
</span><span class="cx"> if (function->filterType() == filterType) {
</span><del>- effects.append({ downcast<FilterEffect>(function.ptr()) });
</del><ins>+ effects.append({ downcast<FilterEffect>(function.get()) });
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGResourceFiltercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx"> // or none of them will be changed.
</span><span class="cx"> if (!primitve->setFilterEffectAttribute(effect, attribute))
</span><span class="cx"> return;
</span><del>- builder->clearResultsRecursive(effect);
</del><ins>+ builder->clearResultsRecursive(*effect);
</ins><span class="cx">
</span><span class="cx"> // Repaint the image on the screen.
</span><span class="cx"> markClientForInvalidation(*objectFilterDataPair.key, RepaintInvalidation);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEBlendElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEBlendElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEBlendElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEBlendElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> auto effect = FEBlend::create(mode());
</span><del>- effect->inputEffects() = { WTFMove(input1), WTFMove(input2) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull(), input2.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEColorMatrixElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> auto effect = FEColorMatrix::create(filterType, WTFMove(filterValues));
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEComponentTransferElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -87,7 +87,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> auto effect = FEComponentTransfer::create(red, green, blue, alpha);
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFECompositeElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFECompositeElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFECompositeElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFECompositeElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> auto effect = FEComposite::create(svgOperator(), k1(), k2(), k3(), k4());
</span><del>- effect->inputEffects() = { WTFMove(input1), WTFMove(input2) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull(), input2.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEConvolveMatrixElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -247,7 +247,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> auto effect = FEConvolveMatrix::create(IntSize(orderXValue, orderYValue), divisorValue, bias(), IntPoint(targetXValue, targetYValue), edgeMode(), FloatPoint(kernelUnitLengthXValue, kernelUnitLengthYValue), preserveAlpha(), kernelMatrix);
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDiffuseLightingElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -171,7 +171,7 @@
</span><span class="cx"> Color color = renderer->style().colorByApplyingColorFilter(renderer->style().svgStyle().lightingColor());
</span><span class="cx">
</span><span class="cx"> auto effect = FEDiffuseLighting::create(color, surfaceScale(), diffuseConstant(), kernelUnitLengthX(), kernelUnitLengthY(), WTFMove(lightSource));
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDisplacementMapElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> auto effect = FEDisplacementMap::create(xChannelSelector(), yChannelSelector(), scale());
</span><del>- effect->inputEffects() = { WTFMove(input1), WTFMove(input2) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull(), input2.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDropShadowElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx"> float opacity = svgStyle.floodOpacity();
</span><span class="cx">
</span><span class="cx"> auto effect = FEDropShadow::create(stdDeviationX(), stdDeviationY(), dx(), dy(), color, opacity);
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEGaussianBlurElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> auto effect = FEGaussianBlur::create(stdDeviationX(), stdDeviationY(), edgeMode());
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMergeElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMergeElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMergeElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEMergeElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> auto mergeEffect = filterBuilder.getEffectById(mergeNode.in1());
</span><span class="cx"> if (!mergeEffect)
</span><span class="cx"> return nullptr;
</span><del>- mergeInputs.append(WTFMove(mergeEffect));
</del><ins>+ mergeInputs.append(mergeEffect.releaseNonNull());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> mergeInputs.shrinkToFit();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMorphologyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> auto effect = FEMorphology::create(svgOperator(), xRadius, yRadius);
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEOffsetElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> auto effect = FEOffset::create(dx(), dy());
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFESpecularLightingElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -179,7 +179,7 @@
</span><span class="cx"> Color color = renderer->style().colorByApplyingColorFilter(renderer->style().svgStyle().lightingColor());
</span><span class="cx">
</span><span class="cx"> auto effect = FESpecularLighting::create(color, surfaceScale(), specularConstant(), specularExponent(), kernelUnitLengthX(), kernelUnitLengthY(), WTFMove(lightSource));
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFETileElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFETileElement.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFETileElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFETileElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> auto effect = FETile::create();
</span><del>- effect->inputEffects() = { WTFMove(input1) };
</del><ins>+ effect->inputEffects() = { input1.releaseNonNull() };
</ins><span class="cx"> return effect;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvggraphicsfiltersSVGFiltercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFilter.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/graphics/filters/SVGFilter.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFilter.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -119,12 +119,12 @@
</span><span class="cx">
</span><span class="cx"> FilterEffectVector SVGFilter::effectsOfType(FilterFunction::Type filterType) const
</span><span class="cx"> {
</span><del>- HashSet<RefPtr<FilterEffect>> effects;
</del><ins>+ HashSet<Ref<FilterEffect>> effects;
</ins><span class="cx">
</span><span class="cx"> for (auto& term : m_expression) {
</span><span class="cx"> auto& effect = term.effect;
</span><span class="cx"> if (effect->filterType() == filterType)
</span><del>- effects.add({ effect.ptr() });
</del><ins>+ effects.add(effect);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return copyToVector(effects);
</span></span></pre></div>
<a id="trunkSourceWebCoresvggraphicsfiltersSVGFilterBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -171,15 +171,15 @@
</span><span class="cx"> addBuiltinEffects();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void SVGFilterBuilder::clearResultsRecursive(FilterEffect* effect)
</del><ins>+void SVGFilterBuilder::clearResultsRecursive(FilterEffect& effect)
</ins><span class="cx"> {
</span><del>- if (!effect->hasResult())
</del><ins>+ if (!effect.hasResult())
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- effect->clearResult();
</del><ins>+ effect.clearResult();
</ins><span class="cx">
</span><span class="cx"> for (auto& reference : effectReferences(effect))
</span><del>- clearResultsRecursive(reference);
</del><ins>+ clearResultsRecursive(*reference);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> std::optional<FilterEffectGeometry> SVGFilterBuilder::effectGeometry(FilterEffect& effect) const
</span><span class="lines">@@ -190,7 +190,7 @@
</span><span class="cx"> return std::nullopt;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool SVGFilterBuilder::buildEffectExpression(const RefPtr<FilterEffect>& effect, FilterEffectVector& stack, unsigned level, SVGFilterExpression& expression) const
</del><ins>+bool SVGFilterBuilder::buildEffectExpression(FilterEffect& effect, FilterEffectVector& stack, unsigned level, SVGFilterExpression& expression) const
</ins><span class="cx"> {
</span><span class="cx"> // A cycle is detected.
</span><span class="cx"> if (stack.contains(effect))
</span><span class="lines">@@ -198,9 +198,9 @@
</span><span class="cx">
</span><span class="cx"> stack.append(effect);
</span><span class="cx">
</span><del>- expression.append({ *effect, effectGeometry(*effect), level });
</del><ins>+ expression.append({ effect, effectGeometry(effect), level });
</ins><span class="cx">
</span><del>- for (auto& inputEffect : effect->inputEffects()) {
</del><ins>+ for (auto& inputEffect : effect.inputEffects()) {
</ins><span class="cx"> if (!buildEffectExpression(inputEffect, stack, level + 1, expression))
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="lines">@@ -218,7 +218,7 @@
</span><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> FilterEffectVector stack;
</span><del>- if (!buildEffectExpression(m_lastEffect, stack, 0, expression))
</del><ins>+ if (!buildEffectExpression(*m_lastEffect, stack, 0, expression))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> if (expression.size() > maxTotalNumberFilterEffects)
</span></span></pre></div>
<a id="trunkSourceWebCoresvggraphicsfiltersSVGFilterBuilderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -54,11 +54,11 @@
</span><span class="cx">
</span><span class="cx"> void appendEffectToEffectReferences(RefPtr<FilterEffect>&&, RenderObject*);
</span><span class="cx">
</span><del>- inline FilterEffectSet& effectReferences(FilterEffect* effect)
</del><ins>+ inline FilterEffectSet& effectReferences(FilterEffect& effect)
</ins><span class="cx"> {
</span><span class="cx"> // Only allowed for effects belongs to this builder.
</span><del>- ASSERT(m_effectReferences.contains(effect));
- return m_effectReferences.find(effect)->value;
</del><ins>+ ASSERT(m_effectReferences.contains(&effect));
+ return m_effectReferences.find(&effect)->value;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Required to change the attributes of a filter during an svgAttributeChanged.
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> inline FilterEffect* effectByRenderer(RenderObject* object) { return m_effectRenderer.get(object); }
</span><span class="cx">
</span><span class="cx"> void clearEffects();
</span><del>- void clearResultsRecursive(FilterEffect*);
</del><ins>+ void clearResultsRecursive(FilterEffect&);
</ins><span class="cx">
</span><span class="cx"> void setupBuiltinEffects(Ref<FilterEffect> sourceGraphic);
</span><span class="cx"> RefPtr<FilterEffect> buildFilterEffects(SVGFilterElement&);
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> std::optional<FilterEffectGeometry> effectGeometry(FilterEffect&) const;
</span><del>- bool buildEffectExpression(const RefPtr<FilterEffect>&, FilterEffectVector& stack, unsigned level, SVGFilterExpression&) const;
</del><ins>+ bool buildEffectExpression(FilterEffect&, FilterEffectVector& stack, unsigned level, SVGFilterExpression&) const;
</ins><span class="cx">
</span><span class="cx"> HashMap<AtomString, RefPtr<FilterEffect>> m_builtinEffects;
</span><span class="cx"> HashMap<AtomString, RefPtr<FilterEffect>> m_namedEffects;
</span></span></pre></div>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebKit/ChangeLog 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2021-12-10 Said Abou-Hallawa <said@apple.com>
+
+ [GPU Process] [Filters] Make FilterEffectVector a Vector of Ref<FilterEffect>
+ https://bugs.webkit.org/show_bug.cgi?id=234108
+
+ Reviewed by Cameron McCormack.
+
+ * GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
+ (WebKit::RemoteDisplayListRecorder::drawFilteredImageBuffer):
+
</ins><span class="cx"> 2021-12-10 Per Arne Vollan <pvollan@apple.com>
</span><span class="cx">
</span><span class="cx"> [WP][macOS] Add required system call
</span></span></pre></div>
<a id="trunkSourceWebKitGPUProcessgraphicsRemoteDisplayListRecordercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp (286863 => 286864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp 2021-12-10 19:26:37 UTC (rev 286864)
</span><span class="lines">@@ -236,7 +236,7 @@
</span><span class="cx"> auto filter = filterReference.takeFilter();
</span><span class="cx">
</span><span class="cx"> for (auto& effect : filter->effectsOfType(FilterEffect::Type::FEImage)) {
</span><del>- auto& feImage = *downcast<FEImage>(effect.get());
</del><ins>+ auto& feImage = downcast<FEImage>(effect.get());
</ins><span class="cx">
</span><span class="cx"> const auto* resourceIdentifier = std::get_if<RenderingResourceIdentifier>(&feImage.sourceImage());
</span><span class="cx"> if (!resourceIdentifier) {
</span></span></pre>
</div>
</div>
</body>
</html>