Re: Gio.DBusObjectManagerClient not updating



Hi Hayden Lau,

do you have a GLib mainloop running? If no, maybe creating and starting
one may help.

See also: https://bugzilla.gnome.org/show_bug.cgi?id=759644

-- 
Regards
Chris


Am Samstag, den 13.01.2018, 16:19 +0000 schrieb Hayden Lau:
Hello,

I understand this is a dev mailing list, but I’m not sure where to
post this question otherwise.

I’m attempting to write an application that interacts with UDisks2
over  DBus with PyGObject. However, I’m finding that after
instantiating the  proper Gio.DBusObjectManagerClient, I seem to be
unable to get updates  on the ObjectManager’s state. Am I missing
something? The only example  code that I could find that had similar
functionality was in udiskie (https://github.com/coldfix/udiskie),  b
ut that application uses Gio.DBusProxy directly. Is that
the  recommended approach? My (non-working) proof of concept code
pasted  below. It prints the initial set of objects reported by
the  ‘org.freedesktop.UDisks2’ object manager, but does not print
changes  (either via signal or polling) when disks are added or
removed.

I am using the version of PyGObject that comes packaged with Ubuntu
16.04 LTS, 3.20.0, along with the versions of DBus and Glib, etc that
also come with the OS. (https://packages.ubuntu.com/xenial/python3-gi
)

Thank you,
Hayden Lau

========================
from time import sleep
import gi
gi.require_version('Gio', '2.0')
from gi.repository import Gio

udisks2 = Gio.DBusObjectManagerClient.new_for_bus_sync(
    Gio.BusType.SYSTEM, 
    Gio.DBusObjectManagerClientFlags.NONE,
    'org.freedesktop.UDisks2',
    '/org/freedesktop/UDisks2',
    None,
    None,
    None
)

def new_obj_handler(obj):
    print('New Object: ', obj)

def new_iface_handler(obj):
    print('New Interface: ', obj)

def get_paths(objmgr):
    return [obj.get_object_path() for obj in objmgr.get_objects()]

udisks2.connect('interface-added', new_iface_handler)
udisks2.connect('object-added', new_obj_handler)

paths = []
while(True):
    if paths != get_paths(udisks2):
        paths = get_paths(udisks2)
        print(paths)
    sleep(1)
_______________________________________________
python-hackers-list mailing list
python-hackers-list gnome org
https://mail.gnome.org/mailman/listinfo/python-hackers-list

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]