summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/gegl-compatibility-old-librsvg.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/gegl-compatibility-old-librsvg.patch')
-rw-r--r--gnu/packages/patches/gegl-compatibility-old-librsvg.patch80
1 files changed, 80 insertions, 0 deletions
diff --git a/gnu/packages/patches/gegl-compatibility-old-librsvg.patch b/gnu/packages/patches/gegl-compatibility-old-librsvg.patch
new file mode 100644
index 0000000000..3e5733f9fd
--- /dev/null
+++ b/gnu/packages/patches/gegl-compatibility-old-librsvg.patch
@@ -0,0 +1,80 @@
+From a99a93e5c9013bd4101f5058cdee7d0cf30234fe Mon Sep 17 00:00:00 2001
+Message-ID: <a99a93e5c9013bd4101f5058cdee7d0cf30234fe.1694554961.git.vivien@planete-kraus.eu>
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 5 Jul 2023 21:18:19 +0200
+Subject: [PATCH] Issue #333: continuing to support librsvg 2.40.x (C
+ versions).
+
+Commit 9beeefcbe uses too new functions of librsvg. We could just bump
+the minimum required version but there are issues with Rust not being
+available on every platform yet. So instead, let's add some conditional
+code paths, so that it still builds with librsvg 2.40.x (which was the
+last versions fully in C) while we use newer code and no warnings when
+using newer versions.
+---
+ operations/external/svg-load.c | 25 ++++++++++++++++++++-----
+ 1 file changed, 20 insertions(+), 5 deletions(-)
+
+diff --git a/operations/external/svg-load.c b/operations/external/svg-load.c
+index 3312a0c0a..15c0b30b7 100644
+--- a/operations/external/svg-load.c
++++ b/operations/external/svg-load.c
+@@ -76,16 +76,25 @@ query_svg (GeglOperation *operation)
+ {
+ GeglProperties *o = GEGL_PROPERTIES (operation);
+ Priv *p = (Priv*) o->user_data;
++#if LIBRSVG_CHECK_VERSION(2, 52, 0)
+ gdouble out_width, out_height;
++#else
++ RsvgDimensionData dimensions;
++#endif
+
+ g_return_val_if_fail (p->handle != NULL, FALSE);
+
+- rsvg_handle_get_intrinsic_size_in_pixels (p->handle, &out_width, &out_height);
+-
+ p->format = babl_format ("R'G'B'A u8");
+
++#if LIBRSVG_CHECK_VERSION(2, 52, 0)
++ rsvg_handle_get_intrinsic_size_in_pixels (p->handle, &out_width, &out_height);
+ p->height = out_height;
+- p->width = out_width;
++ p->width = out_width;
++#else
++ rsvg_handle_get_dimensions (p->handle, &dimensions);
++ p->height = dimensions.height;
++ p->width = dimensions.width;
++#endif
+
+ return TRUE;
+ }
+@@ -98,10 +107,12 @@ load_svg (GeglOperation *operation,
+ {
+ GeglProperties *o = GEGL_PROPERTIES (operation);
+ Priv *p = (Priv*) o->user_data;
+- RsvgRectangle svg_rect = {0.0, 0.0, width, height};
+ cairo_surface_t *surface;
+ cairo_t *cr;
+- GError *error = NULL;
++#if LIBRSVG_CHECK_VERSION(2, 52, 0)
++ GError *error = NULL;
++ RsvgRectangle svg_rect = {0.0, 0.0, width, height};
++#endif
+
+ g_return_val_if_fail (p->handle != NULL, -1);
+
+@@ -115,7 +126,11 @@ load_svg (GeglOperation *operation,
+ (double)height / (double)p->height);
+ }
+
++#if LIBRSVG_CHECK_VERSION(2, 52, 0)
+ rsvg_handle_render_document (p->handle, cr, &svg_rect, &error);
++#else
++ rsvg_handle_render_cairo (p->handle, cr);
++#endif
+
+ cairo_surface_flush (surface);
+
+--
+2.41.0
+