mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-26 04:02:09 +01:00
Revert "gdbus-codegen: emit GUnixFDLists if an arg has type 'h'"
This reverts commit 4aba03562bc1526a1baf70ad068a9395ec64bf64, preserving the new tests but adjusting them to assert that the old behaviour is restored. As expected, there were a few projects which broke because of this. Unfortunately, in one case the breakage crosses a project boundary: sysprof ships D-Bus introspection XML, which is consumed by mutter and passed through gdbus-codegen. Since sysprof cannot add this annotation without breaking its existing users, a warning is also not appropriate. https://gitlab.gnome.org/GNOME/jhbuild/issues/41 https://gitlab.gnome.org/GNOME/sysprof/issues/17 https://gitlab.gnome.org/GNOME/glib/issues/1726
This commit is contained in:
parent
3dec72b946
commit
43697d6b99
@ -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
|
||||
|
@ -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. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user