Update to 2.46.1

This commit is contained in:
Kalev Lember 2019-10-07 18:54:05 +02:00
parent a29cb4bffd
commit 5d0633369f
4 changed files with 7 additions and 98 deletions

1
.gitignore vendored
View File

@ -57,3 +57,4 @@ librsvg-2.31.0.tar.bz2
/librsvg-2.45.91.tar.xz /librsvg-2.45.91.tar.xz
/librsvg-2.45.92.tar.xz /librsvg-2.45.92.tar.xz
/librsvg-2.46.0.tar.xz /librsvg-2.46.0.tar.xz
/librsvg-2.46.1.tar.xz

View File

@ -1,93 +0,0 @@
From ae7ecfa0846b40d75f5b20c4f122df9a0b78ee4f Mon Sep 17 00:00:00 2001
From: Federico Mena Quintero <federico@gnome.org>
Date: Thu, 19 Sep 2019 15:25:03 -0500
Subject: [PATCH] (#506): Fix empty patterns which reference a fallback pattern
with children
When we do draw_ctx.acquired_nodes().get_node_of_type() to acquire a
pattern, or its fallback, we need to set the NodePattern.node to the
corresponding node weakref.
This was being done correctly at the beginning of the implementation
of resolve(), as of commit 03cbbe96, where the sequence is this:
DrawingCtx.set_source_paint_server()
paint_server = acquired_nodes.get_node()
<paint_server as NodePattern>.resolve_fallbacks_and_set_pattern()
self.resolve(node, ...)
*self.node.borrow_mut() = Some(node.downgrade());
However, this setting of self.node (where self is a NodePattern) to
the corresponding weakref was missing in the "while" loop in
NodePattern.resolve(), where it acquires the fallback pattern - the
fallback's NodePattern also needs its .node to be set to its node's
weakref.
We'll clean this up at some point.
Fixes https://gitlab.gnome.org/GNOME/librsvg/issues/506
---
rsvg_internals/src/pattern.rs | 6 +++++-
.../bugs/506-pattern-fallback-ref.png | Bin 0 -> 486 bytes
.../reftests/bugs/506-pattern-fallback.svg | 19 ++++++++++++++++++
3 files changed, 24 insertions(+), 1 deletion(-)
create mode 100644 tests/fixtures/reftests/bugs/506-pattern-fallback-ref.png
create mode 100644 tests/fixtures/reftests/bugs/506-pattern-fallback.svg
diff --git a/rsvg_internals/src/pattern.rs b/rsvg_internals/src/pattern.rs
index 9d943b1d..291d81d3 100644
--- a/rsvg_internals/src/pattern.rs
+++ b/rsvg_internals/src/pattern.rs
@@ -164,7 +164,11 @@ impl PaintSource for NodePattern {
}
let node_data = a_node.borrow();
- result.resolve_from_fallback(&node_data.get_impl::<NodePattern>());
+
+ let fallback_pattern = node_data.get_impl::<NodePattern>();
+ *fallback_pattern.node.borrow_mut() = Some(a_node.downgrade());
+
+ result.resolve_from_fallback(fallback_pattern);
stack.push(a_node);
} else {
diff --git a/tests/fixtures/reftests/bugs/506-pattern-fallback-ref.png b/tests/fixtures/reftests/bugs/506-pattern-fallback-ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..b9fec4e90e652595043b4dc7d6f9a2e915c3b9f8
GIT binary patch
literal 486
zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6&6<n8Xl@E-&h>|H(?C_UTL
z#WAE}&f6;+c^eD_SR7~nt2VPVd@-?XSrfP4ZZV)9T7&$XmzgUpUi<j}xbkhM{my0V
m48<%AhXyyIb(jFnf52+augz4zbVjohWSgg}pUXO@geCxCb5Z&L
literal 0
HcmV?d00001
diff --git a/tests/fixtures/reftests/bugs/506-pattern-fallback.svg b/tests/fixtures/reftests/bugs/506-pattern-fallback.svg
new file mode 100644
index 00000000..64f71050
--- /dev/null
+++ b/tests/fixtures/reftests/bugs/506-pattern-fallback.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.1"
+ width="256"
+ height="256"
+ viewBox="0 0 256 256">
+ <defs>
+ <pattern id="pattern1" xlink:href="#pattern2"/>
+ <pattern id="pattern2" patternUnits="userSpaceOnUse" width="1" height="1">
+ <image width="1" height="1" preserveAspectRatio="none"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12Ng+M8AAAICAQCqKp4n
+AAAAAElFTkSuQmCC"
+ x="0"
+ y="0"/>
+ </pattern>
+ </defs>
+ <rect x="100" y="100" width="56" height="56" style="fill:url(#pattern1);"/>
+</svg>
--
2.23.0

View File

@ -12,14 +12,12 @@
Name: librsvg2 Name: librsvg2
Summary: An SVG library based on cairo Summary: An SVG library based on cairo
Version: 2.46.0 Version: 2.46.1
Release: 2%{?dist} Release: 1%{?dist}
License: LGPLv2+ License: LGPLv2+
URL: https://wiki.gnome.org/Projects/LibRsvg URL: https://wiki.gnome.org/Projects/LibRsvg
Source0: https://download.gnome.org/sources/librsvg/2.46/librsvg-%{version}.tar.xz Source0: https://download.gnome.org/sources/librsvg/2.46/librsvg-%{version}.tar.xz
# Backported from upstream
Patch0: 0001-506-Fix-empty-patterns-which-reference-a-fallback-pa.patch
BuildRequires: chrpath BuildRequires: chrpath
BuildRequires: gcc BuildRequires: gcc
@ -165,6 +163,9 @@ rm -vrf %{buildroot}%{_datadir}/doc
%{_mandir}/man1/rsvg-convert.1* %{_mandir}/man1/rsvg-convert.1*
%changelog %changelog
* Mon Oct 07 2019 Kalev Lember <klember@redhat.com> - 2.46.1-1
- Update to 2.46.1
* Fri Sep 20 2019 Kalev Lember <klember@redhat.com> - 2.46.0-2 * Fri Sep 20 2019 Kalev Lember <klember@redhat.com> - 2.46.0-2
- Backport a patch to fix svg rendering in gnome-initial-setup (#1753183) - Backport a patch to fix svg rendering in gnome-initial-setup (#1753183)

View File

@ -1 +1 @@
SHA512 (librsvg-2.46.0.tar.xz) = baa6c4490b6485c30f570408e70fbd3ce2d3b9584c4f06e5f6afdf7a1b7171f5af13e01e18476a392c9a2b6b0bf429fac2c04daa6f50d5e413f53babcdc4adbc SHA512 (librsvg-2.46.1.tar.xz) = f50454338d8fb3587dc559cef6e4f0122bbd3b5678f22ff00747622727bb98b4c7fd9aec856ad88b51215e4769d091175736d3843ae9086d245db1a2a9ff5bd3