Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(831)

Unified Diff: sky/engine/core/rendering/RenderLayer.cpp

Issue 962543003: Simplify RenderLayer's handling of filters. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/engine/core/rendering/RenderLayer.h ('k') | sky/engine/core/rendering/RenderLayerFilterInfo.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/core/rendering/RenderLayer.cpp
diff --git a/sky/engine/core/rendering/RenderLayer.cpp b/sky/engine/core/rendering/RenderLayer.cpp
index 644a5af3fa51acee0e608edbb767291876ab1e16..9e1be2fcdd217ba6e398185d0b22a41b5ed9b484 100644
--- a/sky/engine/core/rendering/RenderLayer.cpp
+++ b/sky/engine/core/rendering/RenderLayer.cpp
@@ -67,7 +67,6 @@
#include "sky/engine/platform/geometry/FloatRect.h"
#include "sky/engine/platform/geometry/TransformState.h"
#include "sky/engine/platform/graphics/GraphicsContextStateSaver.h"
-#include "sky/engine/platform/graphics/filters/ReferenceFilter.h"
#include "sky/engine/platform/graphics/filters/SourceGraphic.h"
#include "sky/engine/platform/transforms/ScaleTransformOperation.h"
#include "sky/engine/platform/transforms/TransformationMatrix.h"
@@ -83,7 +82,6 @@ RenderLayer::RenderLayer(RenderBox* renderer, LayerType type)
, m_isRootLayer(renderer->isRenderView())
, m_3DTransformedDescendantStatusDirty(true)
, m_has3DTransformedDescendant(false)
- , m_hasFilterInfo(false)
, m_renderer(renderer)
, m_parent(0)
, m_previous(0)
@@ -98,7 +96,6 @@ RenderLayer::RenderLayer(RenderBox* renderer, LayerType type)
RenderLayer::~RenderLayer()
{
- removeFilterInfoIfNeeded();
}
void RenderLayer::updateLayerPositionsAfterLayout()
@@ -616,40 +613,16 @@ void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle*
return;
if (!renderer()->hasFilter()) {
- removeFilterInfoIfNeeded();
+ m_filterRenderer = nullptr;
return;
}
- if (renderer()->style()->filter().hasReferenceFilter())
- ensureFilterInfo()->updateReferenceFilterClients(renderer()->style()->filter());
- else if (hasFilterInfo())
- filterInfo()->removeReferenceFilterClients();
-
- // FilterEffectRenderer is only used to render the filters in software mode,
- // so we always need to run updateOrRemoveFilterEffectRenderer after the composited
- // mode might have changed for this layer.
- if (!renderer()->hasFilter()) {
- // Don't delete the whole filter info here, because we might use it
- // for loading CSS shader files.
- if (RenderLayerFilterInfo* filterInfo = this->filterInfo())
- filterInfo->setRenderer(nullptr);
-
- return;
- }
-
- RenderLayerFilterInfo* filterInfo = ensureFilterInfo();
- if (!filterInfo->renderer()) {
- RefPtr<FilterEffectRenderer> filterRenderer = FilterEffectRenderer::create();
- filterInfo->setRenderer(filterRenderer.release());
-
- // We can optimize away code paths in other places if we know that there are no software filters.
- renderer()->document().view()->setHasSoftwareFilters(true);
- }
+ m_filterRenderer = FilterEffectRenderer::create();
// If the filter fails to build, remove it from the layer. It will still attempt to
// go through regular processing (e.g. compositing), but never apply anything.
- if (!filterInfo->renderer()->build(renderer(), renderer()->style()->filter()))
- filterInfo->setRenderer(nullptr);
+ if (!m_filterRenderer->build(renderer(), renderer()->style()->filter()))
+ m_filterRenderer = nullptr;
}
void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle)
« no previous file with comments | « sky/engine/core/rendering/RenderLayer.h ('k') | sky/engine/core/rendering/RenderLayerFilterInfo.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698