# HG changeset patch # User Michael Albinus # Date 1196891620 0 # Node ID 1ddad0de60e5d9179e6c33332d0942bee447530f # Parent c82c15b719a30f7a6aee6a7345622dabee810248 * 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. diff -r c82c15b719a3 -r 1ddad0de60e5 src/ChangeLog --- a/src/ChangeLog Wed Dec 05 19:59:46 2007 +0000 +++ b/src/ChangeLog Wed Dec 05 21:53:40 2007 +0000 @@ -1,3 +1,11 @@ +2007-12-05 Michael Albinus + + * 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. + 2007-12-04 Michael Albinus * dbusbind.c (QCdbus_system_bus, QCdbus_session_bus): Renamed from diff -r c82c15b719a3 -r 1ddad0de60e5 src/dbusbind.c --- a/src/dbusbind.c Wed Dec 05 19:59:46 2007 +0000 +++ b/src/dbusbind.c Wed Dec 05 21:53:40 2007 +0000 @@ -538,7 +538,7 @@ /* 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 @@ 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 @@ 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,