[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/lisp/net dbus.el
From: |
Michael Albinus |
Subject: |
[Emacs-diffs] emacs/lisp/net dbus.el |
Date: |
Mon, 16 Nov 2009 14:25:26 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Michael Albinus <albinus> 09/11/16 14:25:26
Modified files:
lisp/net : dbus.el
Log message:
* 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.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/net/dbus.el?cvsroot=emacs&r1=1.38&r2=1.39
Patches:
Index: dbus.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/net/dbus.el,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- dbus.el 13 Nov 2009 16:04:59 -0000 1.38
+++ dbus.el 16 Nov 2009 14:25:25 -0000 1.39
@@ -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))