2010-12-10 33 views
1

J'essaye de verrouiller mon économiseur d'écran GNOME, cependant la méthode dbus .Lock attend une réponse. Je voudrais pas attendre une réponse (juste envoyer le signal pour verrouiller l'économiseur d'écran, et continuer avec la vie). Comment puis-je faire cela? (En pratique ce code est dans un fil donc je continue avec la vie, mais je reçois toujours la méchante erreur)Méthode d'appel dbus sur proxy sans blocage (ou pas de timeout)

session_bus = dbus.SessionBus()                                  
screensaver_proxy = session_bus.get_object('org.gnome.ScreenSaver', '/org/gnome/ScreenSaver')                                                                                                                              
locked = screensaver_proxy.Lock(dbus_interface='org.gnome.ScreenSaver') 
print "HELLO" # will never get called, due to: 
/* 
    locked = screensaver_proxy.Lock(dbus_interface='org.gnome.ScreenSaver') 
    File "/usr/lib/pymodules/python2.6/dbus/proxies.py", line 68, in __call__ 
    return self._proxy_method(*args, **keywords) 
    File "/usr/lib/pymodules/python2.6/dbus/proxies.py", line 140, in __call__ 
    **keywords) 
    File "/usr/lib/pymodules/python2.6/dbus/connection.py", line 620, in call_blocking 
    message, timeout) 
    DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken 
*/ 

Répondre