From 7ff8b74a47059edbba7a9f9424fa0022943bc6ec Mon Sep 17 00:00:00 2001 From: Kjell Ahlstedt Date: Fri, 31 Mar 2023 18:15:23 +0200 Subject: Add Gio::giomm_SignalProxy_async_callback() with C linkage and use it instead of SignalProxy_async_callback(). Part of issue #1 --- gio/giomm/slot_async.cc | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'gio/giomm/slot_async.cc') diff --git a/gio/giomm/slot_async.cc b/gio/giomm/slot_async.cc index db23dbf5..d06bf9a5 100644 --- a/gio/giomm/slot_async.cc +++ b/gio/giomm/slot_async.cc @@ -20,9 +20,14 @@ namespace Gio { - +extern "C" +{ +// A function with external linkage and C linkage does not get a mangled name. +// Even though giomm_SignalProxy_async_callback is declared in a named namespace, +// the linker does not see the namespace name, only 'giomm_SignalProxy_async_callback'. +// Therefore the function name shall have a prefix, hopefully unique. void -SignalProxy_async_callback(GObject*, GAsyncResult* res, void* data) +giomm_SignalProxy_async_callback(GObject*, GAsyncResult* res, void* data) { Gio::SlotAsyncReady* the_slot = static_cast(data); @@ -38,5 +43,13 @@ SignalProxy_async_callback(GObject*, GAsyncResult* res, void* data) delete the_slot; } +} // extern "C" + +//TODO: Remove SignalProxy_async_callback when we can break ABI and API. +void +SignalProxy_async_callback(GObject* source_object, GAsyncResult* res, void* data) +{ + giomm_SignalProxy_async_callback(source_object, res, data); +} } // namespace Gio -- cgit v1.2.1