diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2007-12-05 21:53:40 +0000 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2007-12-05 21:53:40 +0000 |
commit | 96faeb40c26817d67713c6c2fdbaca695ea1e7c0 (patch) | |
tree | daedc7a76f3687d06aca927a9fcc95d98a85f49a /src/dbusbind.c | |
parent | f267053c86e92fa56f94ab8e5284a11e54487bb9 (diff) | |
download | emacs-96faeb40c26817d67713c6c2fdbaca695ea1e7c0.tar.gz |
* dbusbind.c (xd_read_message): Return value is a Lisp_Object.
Move check for Vdbus_registered_functions_table to
xd_read_queued_messages.
(xd_read_queued_messages): Protect xd_read_message calls by
internal_condition_case_1.
Diffstat (limited to 'src/dbusbind.c')
-rw-r--r-- | src/dbusbind.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/dbusbind.c b/src/dbusbind.c index 581b5ffd541..07fc24243d7 100644 --- a/src/dbusbind.c +++ b/src/dbusbind.c @@ -538,7 +538,7 @@ usage: (dbus-send-signal BUS SIGNAL SERVICE PATH INTERFACE &rest ARGS) */) /* Read queued incoming message of the D-Bus BUS. BUS is a Lisp symbol, either :system or :session. */ -void +Lisp_Object xd_read_message (bus) Lisp_Object bus; { @@ -551,12 +551,6 @@ xd_read_message (bus) uint dtype; char service[1024], path[1024], interface[1024], member[1024]; - /* Vdbus_registered_functions_table will be made as hash table in - dbus.el. When it isn't loaded yet, it doesn't make sense to - handle D-Bus messages. */ - if (!HASH_TABLE_P (Vdbus_registered_functions_table)) - return; - /* Open a connection to the bus. */ connection = xd_initialize (bus); @@ -635,8 +629,18 @@ xd_read_message (bus) void xd_read_queued_messages () { - xd_read_message (QCdbus_system_bus); - xd_read_message (QCdbus_session_bus); + + /* Vdbus_registered_functions_table will be made as hash table in + dbus.el. When it isn't loaded yet, it doesn't make sense to + handle D-Bus messages. Furthermore, we ignore all Lisp errors + during the call. */ + if (HASH_TABLE_P (Vdbus_registered_functions_table)) + { + internal_condition_case_1 (xd_read_message, QCdbus_system_bus, + Qerror, Fidentity); + internal_condition_case_1 (xd_read_message, QCdbus_session_bus, + Qerror, Fidentity); + } } DEFUN ("dbus-register-signal", Fdbus_register_signal, Sdbus_register_signal, |