# HG changeset patch # User Michael Albinus # Date 1258381525 0 # Node ID 533b0628d2225cb5b42f6867e306fd321a2cc624 # Parent c0e610eb86582e0502205cce3f0eb28bc7032905 * net/dbus.el (dbus-unregister-service): New defun. (dbus-register-property): Register the handlers for "org.freedesktop.DBus.Properties" for SERVICE. (dbus-property-handler): Fix docstring. diff -r c0e610eb8658 -r 533b0628d222 lisp/net/dbus.el --- a/lisp/net/dbus.el Mon Nov 16 04:06:12 2009 +0000 +++ b/lisp/net/dbus.el Mon Nov 16 14:25:25 2009 +0000 @@ -183,6 +183,23 @@ ;; Return. ret)) +(defun dbus-unregister-service (bus service) + "Unregister all objects related to SERVICE from D-Bus BUS. +BUS must be either the symbol `:system' or the symbol `:session'. +SERVICE must be a known service name." + (maphash + (lambda (key value) + (dolist (elt value) + (ignore-errors + (when (and (equal bus (car key)) (string-equal service (cadr elt))) + (unless + (puthash key (delete elt value) dbus-registered-objects-table) + (remhash key dbus-registered-objects-table)))))) + dbus-registered-objects-table) + (dbus-call-method + bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus + "ReleaseName" service)) + (defun dbus-call-method-non-blocking-handler (&rest args) "Handler for reply messages of asynchronous D-Bus message calls. It calls the function stored in `dbus-registered-objects-table'. @@ -883,14 +900,11 @@ ;; Add the handler. We use `dbus-service-emacs' as service name, in ;; order to let unregister SERVICE despite of this default handler. (dbus-register-method - bus dbus-service-emacs path dbus-interface-properties - "Get" 'dbus-property-handler) + bus service path dbus-interface-properties "Get" 'dbus-property-handler) (dbus-register-method - bus dbus-service-emacs path dbus-interface-properties - "GetAll" 'dbus-property-handler) + bus service path dbus-interface-properties "GetAll" 'dbus-property-handler) (dbus-register-method - bus dbus-service-emacs path dbus-interface-properties - "Set" 'dbus-property-handler) + bus service path dbus-interface-properties "Set" 'dbus-property-handler) ;; Create a hash table entry. We use nil for the unique name, ;; because the property might be accessed from anybody. @@ -902,9 +916,8 @@ (list key (list service path)))) (defun dbus-property-handler (&rest args) - "Handler for reply messages of asynchronous D-Bus message calls. -It calls the function stored in `dbus-registered-objects-table'. -The result will be made available in `dbus-return-values-table'." + "Default Handler for the \"org.freedesktop.DBus.Properties\" interface. +It will be registered for all objects created by `dbus-register-object'." (let ((bus (dbus-event-bus-name last-input-event)) (path (dbus-event-path-name last-input-event)) (method (dbus-event-member-name last-input-event))