summaryrefslogtreecommitdiff
path: root/src/dbusbind.c
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2007-12-05 21:53:40 +0000
committerMichael Albinus <michael.albinus@gmx.de>2007-12-05 21:53:40 +0000
commit96faeb40c26817d67713c6c2fdbaca695ea1e7c0 (patch)
treedaedc7a76f3687d06aca927a9fcc95d98a85f49a /src/dbusbind.c
parentf267053c86e92fa56f94ab8e5284a11e54487bb9 (diff)
downloademacs-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.c22
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,