summaryrefslogtreecommitdiff
path: root/gio/giomm/slot_async.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gio/giomm/slot_async.cc')
-rw-r--r--gio/giomm/slot_async.cc17
1 files changed, 15 insertions, 2 deletions
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<Gio::SlotAsyncReady*>(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