mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-24 13:57:36 +00:00
* net/dbus.el (dbus-unregister-object): Remove match rule of signals.
Release services only if they are defined. (Bug#9581)
This commit is contained in:
parent
a3de0cbd6d
commit
fac7ae53a7
2 changed files with 25 additions and 13 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2011-09-24 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/dbus.el (dbus-unregister-object): Remove match rule of signals.
|
||||
Release services only if they are defined. (Bug#9581)
|
||||
|
||||
2011-09-23 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* textmodes/paragraphs.el (forward-sentence): For backwards case,
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ association to the service from D-Bus."
|
|||
(value (cdr object))
|
||||
(entry (gethash key dbus-registered-objects-table))
|
||||
ret)
|
||||
;; entry has the structure ((UNAME SERVICE PATH MEMBER) ...).
|
||||
;; entry has the structure ((UNAME SERVICE PATH MEMBER [RULE]) ...).
|
||||
;; value has the structure ((SERVICE PATH [HANDLER]) ...).
|
||||
;; MEMBER is either a string (the handler), or a cons cell (a
|
||||
;; property value). UNAME and property values are not taken into
|
||||
|
|
@ -154,11 +154,17 @@ association to the service from D-Bus."
|
|||
(when (equal
|
||||
(car value)
|
||||
(butlast (cdr elt) (- (length (cdr elt)) (length (car value)))))
|
||||
(setq ret t)
|
||||
;; Compute new hash value. If it is empty, remove it from the
|
||||
;; hash table.
|
||||
(unless (puthash key (delete elt entry) dbus-registered-objects-table)
|
||||
(remhash key dbus-registered-objects-table))
|
||||
(setq ret t)))
|
||||
;; Remove match rule of signals.
|
||||
(let ((rule (nth 4 elt)))
|
||||
(when (stringp rule)
|
||||
(dbus-call-method
|
||||
(car key) dbus-service-dbus dbus-path-dbus dbus-interface-dbus
|
||||
"RemoveMatch" rule)))))
|
||||
;; Check, whether there is still a registered function or property
|
||||
;; for the given service. If not, unregister the service from the
|
||||
;; bus.
|
||||
|
|
@ -166,17 +172,18 @@ association to the service from D-Bus."
|
|||
(let ((service (cadr elt))
|
||||
(bus (car key))
|
||||
found)
|
||||
(maphash
|
||||
(lambda (k v)
|
||||
(dolist (e v)
|
||||
(ignore-errors
|
||||
(when (and (equal bus (car k)) (string-equal service (cadr e)))
|
||||
(setq found t)))))
|
||||
dbus-registered-objects-table)
|
||||
(unless found
|
||||
(dbus-call-method
|
||||
bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus
|
||||
"ReleaseName" service))))
|
||||
(when service
|
||||
(maphash
|
||||
(lambda (k v)
|
||||
(dolist (e v)
|
||||
(ignore-errors
|
||||
(when (and (equal bus (car k)) (string-equal service (cadr e)))
|
||||
(setq found t)))))
|
||||
dbus-registered-objects-table)
|
||||
(unless found
|
||||
(dbus-call-method
|
||||
bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus
|
||||
"ReleaseName" service)))))
|
||||
;; Return.
|
||||
ret))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue