Commit 8fb1629f authored by Michael Albinus's avatar Michael Albinus
Browse files

* net/dbus.el (dbus-unregister-object): Release service, if no

other method is registered for it.
parent 362654a6
2009-11-09 Michael Albinus <>
* net/dbus.el (dbus-unregister-object): Release service, if no
other method is registered for it.
2009-11-08 Markus Rost <>
* bookmark.el (bookmark-completing-read): Sort bookmark names if
......@@ -139,23 +139,42 @@ been unregistered, `nil' otherwise."
;; Find the corresponding entry in the hash table.
(let* ((key (car object))
(value (gethash key dbus-registered-functions-table)))
(value (gethash key dbus-registered-functions-table))
(bus (car key))
;; Loop over the registered functions.
(while (consp value)
;; (car value) has the structure (UNAME SERVICE PATH HANDLER).
(dolist (val value)
;; val has the structure (UNAME SERVICE PATH HANDLER).
;; (cdr object) has the structure ((SERVICE PATH HANDLER) ...).
(if (not (equal (cdr (car value)) (car (cdr object))))
(setq value (cdr value))
(when (equal (cdr val) (car (cdr object)))
;; Compute new hash value. If it is empty, remove it from
;; hash table.
(delete (car value) (gethash key dbus-registered-functions-table))
(delete val (gethash key dbus-registered-functions-table))
(remhash key dbus-registered-functions-table))
(setq value t)))
(setq ret t)))
;; Check, whether there is still a registered function for the
;; given service. If not, unregister the service from the bus.
(dolist (val value)
(let ((service (cadr val))
(lambda (k v)
(dolist (val v)
(when (and (equal bus (car k))
(string-equal service (cadr val))))
(setq found t))))
(unless found
bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus
"ReleaseName" service))))
;; Return.
(defun dbus-call-method-non-blocking-handler (&rest args)
"Handler for reply messages of asynchronous D-Bus message calls.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment