2010-12-10 9 views
1

Ich versuche, meinen GNOME-Bildschirmschoner zu sperren, aber die dbus .Lock Methode wartet auf eine Antwort. Ich möchte es nicht warten auf eine Antwort (senden Sie einfach das Signal, um den Bildschirmschoner zu sperren, und weiter mit dem Leben). Wie mache ich das? (In der Praxis ist dieser Code in einem Thread, so dass ich mit dem Leben fortfahren, aber ich bekomme immer noch die böse Fehler)Anruf dbus Methode auf Proxy ohne Blockierung (oder keine Zeitüberschreitung)

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 
*/ 

Antwort

Verwandte Themen