mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-01 15:03:39 +02:00
gio: remove use of generic marshaller from GIO objects
Using the generic marshaller has drawbacks beyond performance. One such drawback is that it breaks the stack unwinding from the Linux kernel due to having unsufficient data to walk past ffi_call_unixt64. That means that performance profiling by application developers looks grouped among seemingly unrelated code paths. While we can't fix the kernel unwinding here, we can provide proper c_marshallers and va_marshallers for objects within Gio so that performance profiling of applications is more reliable. Related to GNOME/Initiatives#10
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
#include "gdbusinterface.h"
|
||||
|
||||
#include "glibintl.h"
|
||||
#include "gmarshal-internal.h"
|
||||
|
||||
/**
|
||||
* SECTION:gdbusobjectmanagerclient
|
||||
@@ -517,7 +518,7 @@ g_dbus_object_manager_client_class_init (GDBusObjectManagerClientClass *klass)
|
||||
G_STRUCT_OFFSET (GDBusObjectManagerClientClass, interface_proxy_signal),
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
_g_cclosure_marshal_VOID__OBJECT_OBJECT_STRING_STRING_VARIANT,
|
||||
G_TYPE_NONE,
|
||||
5,
|
||||
G_TYPE_DBUS_OBJECT_PROXY,
|
||||
@@ -525,6 +526,9 @@ g_dbus_object_manager_client_class_init (GDBusObjectManagerClientClass *klass)
|
||||
G_TYPE_STRING,
|
||||
G_TYPE_STRING,
|
||||
G_TYPE_VARIANT);
|
||||
g_signal_set_va_marshaller (signals[INTERFACE_PROXY_SIGNAL_SIGNAL],
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
_g_cclosure_marshal_VOID__OBJECT_OBJECT_STRING_STRING_VARIANTv);
|
||||
|
||||
/**
|
||||
* GDBusObjectManagerClient::interface-proxy-properties-changed:
|
||||
@@ -556,13 +560,16 @@ g_dbus_object_manager_client_class_init (GDBusObjectManagerClientClass *klass)
|
||||
G_STRUCT_OFFSET (GDBusObjectManagerClientClass, interface_proxy_properties_changed),
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
_g_cclosure_marshal_VOID__OBJECT_OBJECT_VARIANT_BOXED,
|
||||
G_TYPE_NONE,
|
||||
4,
|
||||
G_TYPE_DBUS_OBJECT_PROXY,
|
||||
G_TYPE_DBUS_PROXY,
|
||||
G_TYPE_VARIANT,
|
||||
G_TYPE_STRV);
|
||||
g_signal_set_va_marshaller (signals[INTERFACE_PROXY_PROPERTIES_CHANGED_SIGNAL],
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
_g_cclosure_marshal_VOID__OBJECT_OBJECT_VARIANT_BOXEDv);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user