Skip to content

Commit 89254b3

Browse files
authored
Merge pull request #1616 from quo/pr-dbusprop
gio: Fix order of arguments to g_dbus_connection_register_object_with_closures()
2 parents 5e47fa2 + 7e9610c commit 89254b3

File tree

2 files changed

+79
-13
lines changed

2 files changed

+79
-13
lines changed

gio/src/dbus_connection.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -245,38 +245,38 @@ impl<'a> RegistrationBuilder<'a> {
245245
})
246246
.to_glib_none()
247247
.0,
248-
self.set_property
248+
self.get_property
249249
.map(|f| {
250250
glib::Closure::new_local(move |args| {
251251
let conn = args[0].get::<DBusConnection>().unwrap();
252252
let sender = args[1].get::<Option<&str>>().unwrap();
253253
let object_path = args[2].get::<&str>().unwrap();
254254
let interface_name = args[3].get::<&str>().unwrap();
255255
let property_name = args[4].get::<&str>().unwrap();
256-
let value = args[5].get::<glib::Variant>().unwrap();
257-
let result = f(
258-
conn,
259-
sender,
260-
object_path,
261-
interface_name,
262-
property_name,
263-
value,
264-
);
256+
let result =
257+
f(conn, sender, object_path, interface_name, property_name);
265258
Some(result.to_value())
266259
})
267260
})
268261
.to_glib_none()
269262
.0,
270-
self.get_property
263+
self.set_property
271264
.map(|f| {
272265
glib::Closure::new_local(move |args| {
273266
let conn = args[0].get::<DBusConnection>().unwrap();
274267
let sender = args[1].get::<Option<&str>>().unwrap();
275268
let object_path = args[2].get::<&str>().unwrap();
276269
let interface_name = args[3].get::<&str>().unwrap();
277270
let property_name = args[4].get::<&str>().unwrap();
278-
let result =
279-
f(conn, sender, object_path, interface_name, property_name);
271+
let value = args[5].get::<glib::Variant>().unwrap();
272+
let result = f(
273+
conn,
274+
sender,
275+
object_path,
276+
interface_name,
277+
property_name,
278+
value,
279+
);
280280
Some(result.to_value())
281281
})
282282
})

gio/tests/dbus_peer.rs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ fn test_gdbus_peer_connection() {
1313
const EXAMPLE_XML: &str = r#"
1414
<node>
1515
<interface name='com.github.gtk_rs'>
16+
<property type='i' name='Number' access='readwrite' />
1617
<method name='Hello'>
1718
<arg type='s' name='name' direction='in'/>
1819
<arg type='s' name='greet' direction='out'/>
@@ -57,6 +58,7 @@ fn test_gdbus_peer_connection() {
5758
parameters,
5859
invocation| {
5960
dbg!(
61+
"method_call",
6062
_sender,
6163
_object_path,
6264
_interface_name,
@@ -69,6 +71,34 @@ fn test_gdbus_peer_connection() {
6971
invocation.return_value(Some(&(format!("Hello {name}!"),).to_variant()));
7072
},
7173
)
74+
.property({
75+
|_connection, _sender, _object_path, _interface_name, _property_name| {
76+
dbg!(
77+
"get_property",
78+
_sender,
79+
_object_path,
80+
_interface_name,
81+
_property_name
82+
);
83+
assert_eq!(_property_name, "Number");
84+
123.to_variant()
85+
}
86+
})
87+
.set_property({
88+
|_connection, _sender, _object_path, _interface_name, _property_name, _value| {
89+
dbg!(
90+
"set_property",
91+
_sender,
92+
_object_path,
93+
_interface_name,
94+
_property_name,
95+
&_value
96+
);
97+
assert_eq!(_property_name, "Number");
98+
assert_eq!(_value, 456.to_variant());
99+
true
100+
}
101+
})
72102
.build()
73103
.unwrap();
74104

@@ -137,6 +167,42 @@ fn test_gdbus_peer_connection() {
137167

138168
dbg!(&result);
139169

170+
dbg!("getting property");
171+
172+
let getresult = client
173+
.call_future(
174+
None,
175+
"/com/github/gtk_rs",
176+
"org.freedesktop.DBus.Properties",
177+
"Get",
178+
Some(&("com.github.gtk_rs", "Number").to_variant()),
179+
Some(VariantTy::new("(v)").unwrap()),
180+
gio::DBusCallFlags::NONE,
181+
10000,
182+
)
183+
.await
184+
.unwrap();
185+
186+
assert_eq!(getresult, (123.to_variant(),).to_variant());
187+
188+
dbg!("setting property");
189+
190+
let setresult = client
191+
.call_future(
192+
None,
193+
"/com/github/gtk_rs",
194+
"org.freedesktop.DBus.Properties",
195+
"Set",
196+
Some(&("com.github.gtk_rs", "Number", 456.to_variant()).to_variant()),
197+
None,
198+
gio::DBusCallFlags::NONE,
199+
10000,
200+
)
201+
.await
202+
.unwrap();
203+
204+
assert_eq!(setresult, ().to_variant());
205+
140206
dbg!("closing client");
141207
client.close_future().await.unwrap();
142208
dbg!("closed client, closing server");

0 commit comments

Comments
 (0)