Description
Kai Huuhko
2012-02-20 10:11:20 UTC
(In reply to comment #0) > n_cms is passed with the correct value, however cms is passed as an empty list. I think the right solution for this is to add a tp_list_connection_managers_async()/tp_list_connection_managers_finish() pair which is nicely introspectable and does sensible things (use GAsyncResult, etc.), and eventually deprecate/remove tp_list_connection_managers. (Also, we can take this opportunity to make it always-async, i.e. guarantee to call the callback from the main loop, and never be re-entrant.) I've written a simple tp_list_connection_managers_async() in terms of tp_list_connection_managers(), but they should probably have common code rather than one calling the other. Also, we need to decide what _finish() returns in C - GList? GPtrArray? (transfer container)? (transfer full)? See Bug #39189. Created attachment 58163 [details] [review] [01/10] Expect to find service files in the srcdir, not the builddir This fixes the /cm/list test in out-of-tree builds, or rather, would fix it if that test had ever worked (which is fixed by the next commit). Created attachment 58164 [details] [review] [02/10] tests/dbus/cm: actually run the test that lists connection managers It turns out this was my fault, back in 2009. Oops. Created attachment 58165 [details] [review] [03/10] cm test: free things in a less verbose way Created attachment 58166 [details] [review] [04/10] CM test: after listing CMs, inspect them in the test, not the callback This will make it easier to re-use the same test for different ways to list CMs. Created attachment 58167 [details] [review] [05/10] _tp_object_list_copy, _tp_object_list_free: add Created attachment 58168 [details] [review] [06/10] tp_list_connection_managers_async: add This is a modern, bindable version of tp_list_connection_managers(), which has been noted not to work in Python. Created attachment 58169 [details] [review] [07/10] Test listing CMs the new way Created attachment 58170 [details] [review] [08/10] tp_protocol_dup_params, tp_protocol_dup_param, tp_protocol_borrow_params: add tp_protocol_dup_params might be less nice for C (you have to free the list and the items), but is definitely nicer for Python and other g-i bindings. It will probably be renamed to ...get_params in Telepathy 1.0. tp_protocol_borrow_params is an efficient "C binding", but not as GObject'y. tp_protocol_dup_param will replace get_param in Telepathy 1.0. Created attachment 58171 [details] [review] [09/10] tp_connection_manager_dup_protocols: add Again, this provides a more introspectable way to get the protocols. Combining dup_protocol_names() and get_protocol() is more type-safe, but less obvious. Created attachment 58172 [details] [review] [10/10] Add a Python example which lists and inspects protocols with g-i I could get used to this "rapid prototyping in Python" thing. This all looks good. Was fixed in 0.17.6 |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.