]> git.eshelyaron.com Git - emacs.git/commitdiff
* dbusbind.c (xd_read_message): Return value is a Lisp_Object.
authorMichael Albinus <michael.albinus@gmx.de>
Wed, 5 Dec 2007 21:53:40 +0000 (21:53 +0000)
committerMichael Albinus <michael.albinus@gmx.de>
Wed, 5 Dec 2007 21:53:40 +0000 (21:53 +0000)
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.

src/ChangeLog
src/dbusbind.c

index 2f46ea446e48316bd396bff65b99d8d3f7f379e1..d1507f7edde505a87b00ad86d49af4ec28cc6dc2 100644 (file)
@@ -1,3 +1,11 @@
+2007-12-05  Michael Albinus  <michael.albinus@gmx.de>
+
+       * 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  <michael.albinus@gmx.de>
 
        * dbusbind.c (QCdbus_system_bus, QCdbus_session_bus): Renamed from
index 581b5ffd5416f1de5c84303d4d56b698c0db3347..07fc24243d7b4c63cbc8737c9929b5e46f54a045 100644 (file)
@@ -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,