diff --git a/gio/gdbus-2.0/codegen/dbustypes.py b/gio/gdbus-2.0/codegen/dbustypes.py index 498ea668b..16364f9b7 100644 --- a/gio/gdbus-2.0/codegen/dbustypes.py +++ b/gio/gdbus-2.0/codegen/dbustypes.py @@ -284,14 +284,10 @@ class Method: for a in self.in_args: a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count) arg_count += 1 - if 'h' in a.signature: - self.unix_fd = True for a in self.out_args: a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count) arg_count += 1 - if 'h' in a.signature: - self.unix_fd = True if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true': self.deprecated = True diff --git a/gio/tests/gdbus-test-codegen.c b/gio/tests/gdbus-test-codegen.c index ba0f6ed61..c085af84d 100644 --- a/gio/tests/gdbus-test-codegen.c +++ b/gio/tests/gdbus-test-codegen.c @@ -2602,27 +2602,24 @@ handle_hello_fd (FooiGenFDPassing *object, static gboolean handle_no_annotation (FooiGenFDPassing *object, GDBusMethodInvocation *invocation, - GUnixFDList *fd_list, GVariant *arg_greeting, const gchar *arg_greeting_locale) { - foo_igen_fdpassing_complete_no_annotation (object, invocation, fd_list, arg_greeting, arg_greeting_locale); + foo_igen_fdpassing_complete_no_annotation (object, invocation, arg_greeting, arg_greeting_locale); return TRUE; } static gboolean handle_no_annotation_nested (FooiGenFDPassing *object, GDBusMethodInvocation *invocation, - GUnixFDList *fd_list, GVariant *arg_files) { - foo_igen_fdpassing_complete_no_annotation_nested (object, invocation, fd_list); + foo_igen_fdpassing_complete_no_annotation_nested (object, invocation); return TRUE; } -/* Test that generated code for methods includes GUnixFDList arguments if: - * - the method is explicitly annotated as C.UnixFD; or - * - the method signature contains the type 'h' +/* Test that generated code for methods includes GUnixFDList arguments if and + * only if the method is explicitly annotated as C.UnixFD. */ static void test_unix_fd_list (void) @@ -2633,8 +2630,9 @@ test_unix_fd_list (void) /* This method is explicitly annotated. */ iface.handle_hello_fd = handle_hello_fd; - /* This one is not, but it's got an in and out 'h' parameter so should - * automatically grow GUnixFDList arguments. + + /* This one is not annotated; even though it's got an in and out 'h' parameter, for + * backwards compatibility we cannot emit GUnixFDList arguments. */ iface.handle_no_annotation = handle_no_annotation; /* This method has an 'h' inside a complex type. */