[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/src dbusbind.c
From: |
Michael Albinus |
Subject: |
[Emacs-diffs] emacs/src dbusbind.c |
Date: |
Tue, 18 Aug 2009 15:16:41 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Michael Albinus <albinus> 09/08/18 15:16:41
Modified files:
src : dbusbind.c
Log message:
* dbusbind.c (xd_add_watch, xd_remove_watch, Fdbus_init_bus): New
functions.
(xd_initialize): Revert change from 2009-08-16.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/dbusbind.c?cvsroot=emacs&r1=1.43&r2=1.44
Patches:
Index: dbusbind.c
===================================================================
RCS file: /sources/emacs/emacs/src/dbusbind.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- dbusbind.c 17 Aug 2009 01:25:58 -0000 1.43
+++ dbusbind.c 18 Aug 2009 15:16:41 -0000 1.44
@@ -29,6 +29,7 @@
/* Subroutines. */
+Lisp_Object Qdbus_init_bus;
Lisp_Object Qdbus_get_unique_name;
Lisp_Object Qdbus_call_method;
Lisp_Object Qdbus_call_method_asynchronously;
@@ -698,7 +699,6 @@
{
DBusConnection *connection;
DBusError derror;
- int fd;
/* Parameter check. */
CHECK_SYMBOL (bus);
@@ -719,11 +719,6 @@
if (connection == NULL)
XD_SIGNAL2 (build_string ("No connection"), bus);
- /* Add connection file descriptor to input_wait_mask, in order to
- let select() detect, whether a new message has been arrived. */
- if (dbus_connection_get_unix_fd (connection, &fd))
- add_keyboard_wait_descriptor (fd);
-
/* Cleanup. */
dbus_error_free (&derror);
@@ -731,6 +726,83 @@
return connection;
}
+
+/* Add connection file descriptor to input_wait_mask, in order to
+ let select() detect, whether a new message has been arrived. */
+dbus_bool_t
+xd_add_watch (watch, data)
+ DBusWatch *watch;
+ void *data;
+{
+ /* We check only for incoming data. */
+ if (dbus_watch_get_flags (watch) & DBUS_WATCH_READABLE)
+ {
+ /* TODO: Reverse these on Win32, which prefers the opposite. */
+ int fd = dbus_watch_get_unix_fd(watch);
+ if (fd == -1)
+ fd = dbus_watch_get_socket(watch);
+ if (fd == -1)
+ return FALSE;
+
+ //printf ("xd_add_watch: %d\n", fd);
+ /* Add the file descriptor to input_wait_mask. */
+ add_keyboard_wait_descriptor (fd);
+ }
+
+ /* Return. */
+ return TRUE;
+}
+
+/* Remove connection file descriptor from input_wait_mask. */
+void
+xd_remove_watch (watch, data)
+ DBusWatch *watch;
+ void *data;
+{
+ /* We check only for incoming data. */
+ if (dbus_watch_get_flags (watch) & DBUS_WATCH_READABLE)
+ {
+ /* TODO: Reverse these on Win32, which prefers the opposite. */
+ int fd = dbus_watch_get_unix_fd(watch);
+ if (fd == -1)
+ fd = dbus_watch_get_socket(watch);
+ if (fd == -1)
+ return;
+
+ //printf ("xd_remove_watch: %d\n", fd);
+ /* Remove the file descriptor from input_wait_mask. */
+ delete_keyboard_wait_descriptor (fd);
+ }
+
+ /* Return. */
+ return;
+}
+
+DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 1, 0,
+ doc: /* Initialize connection to D-Bus BUS.
+This is an internal function, it shall not be used outside dbus.el. */)
+ (bus)
+ Lisp_Object bus;
+{
+ DBusConnection *connection;
+
+ /* Check parameters. */
+ CHECK_SYMBOL (bus);
+
+ /* Open a connection to the bus. */
+ connection = xd_initialize (bus);
+
+ /* Add the watch functions. */
+ if (!dbus_connection_set_watch_functions (connection,
+ xd_add_watch,
+ xd_remove_watch,
+ NULL, NULL, NULL))
+ XD_SIGNAL1 (build_string ("Cannot add watch functions"));
+
+ /* Return. */
+ return Qnil;
+}
+
DEFUN ("dbus-get-unique-name", Fdbus_get_unique_name, Sdbus_get_unique_name,
1, 1, 0,
doc: /* Return the unique name of Emacs registered at D-Bus BUS. */)
@@ -1865,6 +1937,10 @@
syms_of_dbusbind ()
{
+ Qdbus_init_bus = intern ("dbus-init-bus");
+ staticpro (&Qdbus_init_bus);
+ defsubr (&Sdbus_init_bus);
+
Qdbus_get_unique_name = intern ("dbus-get-unique-name");
staticpro (&Qdbus_get_unique_name);
defsubr (&Sdbus_get_unique_name);
- [Emacs-diffs] emacs/src dbusbind.c, Michael Albinus, 2009/08/15
- [Emacs-diffs] emacs/src dbusbind.c, Michael Albinus, 2009/08/16
- [Emacs-diffs] emacs/src dbusbind.c, Michael Albinus, 2009/08/16
- [Emacs-diffs] emacs/src dbusbind.c,
Michael Albinus <=
- [Emacs-diffs] emacs/src dbusbind.c, Michael Albinus, 2009/08/20
- [Emacs-diffs] emacs/src dbusbind.c, Michael Albinus, 2009/08/22
- [Emacs-diffs] emacs/src dbusbind.c, Michael Albinus, 2009/08/25