<!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>