]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
libvaladoc: Add compat layer for gvRenderData to cope with API break
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 15 Mar 2026 18:52:13 +0000 (19:52 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 15 Mar 2026 20:03:21 +0000 (21:03 +0100)
Thanks to kotontrion!

Fixes https://gitlab.gnome.org/GNOME/vala/issues/1621

configure.ac
libvaladoc/charts/chart.vala
libvaladoc/gvc-compat.c
vapi/libgvc.vapi

index 07978f5f2537526cfbb93e6446a99a7d7624bb07..0d1da9802079275b18711e1aed7701ce2bd367cb 100644 (file)
@@ -249,6 +249,10 @@ if test x$enable_valadoc = xyes; then
        )
        LIBADD="$cgraph_tmp_LIBADD"
        CFLAGS="$cgraph_tmp_CFLAGS"
+       PKG_CHECK_MODULES(LIBGVC13, [libgvc >= 13.0.0], [
+               VALAFLAGS="$VALAFLAGS -D DLIBGVC_13_0_0"
+               CFLAGS="$CFLAGS -DLIBGVC_13_0_0"
+       ], [1])
 fi
 AM_CONDITIONAL(HAVE_CGRAPH, test "$have_cgraph" = "yes")
 AM_CONDITIONAL(ENABLE_VALADOC, test x$enable_valadoc = xyes)
index 4e642d1ce96e30da3b491feb54ae1349eb0b7174..7e17f798ec2d28b68692d583754bcf97b69d19b1 100644 (file)
@@ -23,6 +23,9 @@
 [CCode (cname = "valadoc_compat_gvc_init")]
 extern void valadoc_gvc_init ();
 
+[CCode (cname = "valadoc_compat_gvc_context_render_data")]
+extern int valadoc_gvc_context_render_data (Gvc.Context context, Gvc.Graph graph, [CCode (type = "char*")] string file_type, [CCode (array_length_type = "size_t", type = "char**")] out uint8[] output_data);
+
 public class Valadoc.Charts.Chart : Api.Visitor {
        protected Gvc.Context context;
        protected Gvc.Graph graph;
@@ -60,7 +63,7 @@ public class Valadoc.Charts.Chart : Api.Visitor {
                uint8[]? data;
 
                /* This will return null in data if it fails. */
-               context.render_data (graph, file_type, out data);
+               valadoc_gvc_context_render_data (context, graph, file_type, out data);
                return data;
        }
 
index 29da6342b9f35c7086f9519715fecb6dc0c9a577..e39377e66f4025fe72500b54a45013ece5684e83 100644 (file)
@@ -36,6 +36,9 @@ valadoc_compat_gvc_graph_new (const char *name);
 Agedge_t*
 valadoc_compat_gvc_graph_create_edge (Agraph_t* graph, Agnode_t* from, Agnode_t* to);
 
+int
+valadoc_compat_gvc_context_render_data (GVC_t *gvc, graph_t *g, const char *format, char **result, size_t *length);
+
 void
 valadoc_compat_gvc_init (void)
 {
@@ -73,3 +76,19 @@ valadoc_compat_gvc_graph_create_edge (Agraph_t* graph, Agnode_t* from, Agnode_t*
        return agedge (graph, from, to);
 #endif
 }
+
+/* Compat-layer for API breaks in Graphviz */
+
+int
+valadoc_compat_gvc_context_render_data (GVC_t *gvc, graph_t *g, const char *format, char **result, size_t *length)
+{
+#ifdef LIBGVC_13_0_0
+  return gvRenderData (gvc, g, format, result, length);
+#else
+  unsigned int _length;
+  int res;
+  res = gvRenderData (gvc, g, format, result, &_length);
+  *length = (size_t) _length;
+  return res;
+#endif
+}
index b128a02adcb7937ccb4754dbcd240902497ed143..9ef2abb4d77bd0620362a9cf40c3cef165f1dfcc 100644 (file)
@@ -91,7 +91,11 @@ namespace Gvc {
                public int render_jobs (Graph graph);
 
                [CCode (cname = "gvRenderData")]
+#if LIBGVC_13_0_0
+               public int render_data (Graph graph, [CCode (type = "char*")] string file_type, [CCode (array_length_type = "size_t", type = "char**")] out uint8[] output_data);
+#else
                public int render_data (Graph graph, [CCode (type = "char*")] string file_type, [CCode (array_length_type = "unsigned int", type = "char**")] out uint8[] output_data);
+#endif
        }
 
        [Compact]