[glib: 1/2] Revert "gdbus-codegen: emit GUnixFDLists if an arg has type 'h'"
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 1/2] Revert "gdbus-codegen: emit GUnixFDLists if an arg has type 'h'"
- Date: Thu, 31 Oct 2019 13:43:23 +0000 (UTC)
commit 43697d6b9952d0a4a43e39c7bc90672c860c641f
Author: Will Thompson <will willthompson co uk>
Date: Fri Oct 18 10:24:42 2019 +0100
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
gio/gdbus-2.0/codegen/dbustypes.py | 4 ----
gio/tests/gdbus-test-codegen.c | 16 +++++++---------
2 files changed, 7 insertions(+), 13 deletions(-)
---
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. */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]