On Mon, 2015-02-09 at 15:05 +0000, Norman, Anders wrote: [...] > But the application ends up leaking the signal generated in `dbus_foo_default_init()` which looks like this: > > static void > dbus_foo_default_init (DbusFooIface *iface) > { > /* GObject signals for incoming D-Bus method calls: */ > /** > * DbusFoo::handle-bar: > * @object: A #DbusFoo. > * @invocation: A #GDBusMethodInvocation. > * > * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-example-foo.Bar">Bar()</link> D-Bus method. > * > * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call dbus_foo_complete_bar() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. > * > * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. > */ > g_signal_new ("handle-bar", > G_TYPE_FROM_INTERFACE (iface), > G_SIGNAL_RUN_LAST, > G_STRUCT_OFFSET (DbusFooIface, handle_bar), > g_signal_accumulator_true_handled, > NULL, > g_cclosure_marshal_generic, > G_TYPE_BOOLEAN, > 1, > G_TYPE_DBUS_METHOD_INVOCATION); > > } > > Am I using the generated code wrong or is it a bug in glib/gdbus-codegen? This is not considered a leak, a signal connection leaking would be a leak, but a signal declaration as such, is expected to be kept with the statically registered GTypeInstance. Once you register a type (as a consequence of calling g_object_new() the first time, or however), it's signals will never go away. Cheers, -Tristan _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx https://mail.gnome.org/mailman/listinfo/gtk-list