From: Rico Tzschichholz Date: Sun, 15 Mar 2026 18:52:13 +0000 (+0100) Subject: libvaladoc: Add compat layer for gvRenderData to cope with API break X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=e93b741e0c0cd4468f923fded5bf88e95330f192;p=thirdparty%2Fvala.git libvaladoc: Add compat layer for gvRenderData to cope with API break Thanks to kotontrion! Fixes https://gitlab.gnome.org/GNOME/vala/issues/1621 --- diff --git a/configure.ac b/configure.ac index 07978f5f2..0d1da9802 100644 --- a/configure.ac +++ b/configure.ac @@ -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) diff --git a/libvaladoc/charts/chart.vala b/libvaladoc/charts/chart.vala index 4e642d1ce..7e17f798e 100644 --- a/libvaladoc/charts/chart.vala +++ b/libvaladoc/charts/chart.vala @@ -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; } diff --git a/libvaladoc/gvc-compat.c b/libvaladoc/gvc-compat.c index 29da6342b..e39377e66 100644 --- a/libvaladoc/gvc-compat.c +++ b/libvaladoc/gvc-compat.c @@ -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 +} diff --git a/vapi/libgvc.vapi b/vapi/libgvc.vapi index b128a02ad..9ef2abb4d 100644 --- a/vapi/libgvc.vapi +++ b/vapi/libgvc.vapi @@ -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]