diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-10-20 14:34:53 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-10-20 14:34:53 +0000 |
| commit | 27f5f8bd35318ac2025a2f5164ee45c18523ad3b (patch) | |
| tree | d86dbedecd4142beb0292d196d1d3bf3ddee03a7 | |
| parent | Extensions: catch parameters and translatable values with empty name (diff) | |
| download | inkscape-27f5f8bd35318ac2025a2f5164ee45c18523ad3b.tar.gz inkscape-27f5f8bd35318ac2025a2f5164ee45c18523ad3b.zip | |
Improve isolation
| -rw-r--r-- | src/display/drawing-group.cpp | 4 | ||||
| -rw-r--r-- | src/display/drawing-item.cpp | 7 |
2 files changed, 5 insertions, 6 deletions
diff --git a/src/display/drawing-group.cpp b/src/display/drawing-group.cpp index 6d1218c76..c61aee6ad 100644 --- a/src/display/drawing-group.cpp +++ b/src/display/drawing-group.cpp @@ -101,9 +101,7 @@ DrawingGroup::_renderItem(DrawingContext &dc, Geom::IntRect const &area, unsigne DrawingSurface intermediate(area, device_scale); DrawingContext ict(intermediate); ict.setOperator(CAIRO_OPERATOR_OVER); - if (parent() && isolated) { - flags = flags | RENDER_FILTER_BACKGROUND; - } + if (stop_at == nullptr) { // normal rendering for (auto &i : _children) { diff --git a/src/display/drawing-item.cpp b/src/display/drawing-item.cpp index 52939e301..3a4f5cfc2 100644 --- a/src/display/drawing-item.cpp +++ b/src/display/drawing-item.cpp @@ -742,9 +742,6 @@ DrawingItem::render(DrawingContext &dc, Geom::IntRect const &area, unsigned flag nir |= (_filter != nullptr && render_filters); // 3. it has a filter nir |= needs_opacity; // 4. it is non-opaque nir |= (_cache != nullptr); // 5. it is to be cached - nir |= (_mix_blend_mode != SP_CSS_BLEND_NORMAL); // 6. Blend mode not normal - // Isolation is handled by the drawing-group - /* How the rendering is done. * * Clipping, masking and opacity are done by rendering them to a surface @@ -760,7 +757,11 @@ DrawingItem::render(DrawingContext &dc, Geom::IntRect const &area, unsigned flag // We also use this path for filter background rendering, because masking, clipping, // filters and opacity do not apply when rendering the ancestors of the filtered // element + if ((flags & RENDER_FILTER_BACKGROUND) || !needs_intermediate_rendering) { + if (_cache) { + _cache->markDirty(*carea); + } dc.setOperator(ink_css_blend_to_cairo_operator(_mix_blend_mode)); return _renderItem(dc, *carea, flags & ~RENDER_FILTER_BACKGROUND, stop_at); } |
