Add fd handling with callbacks to select, dbus needs it for async operation.
authorJan D <jan.h.d@swipnet.se>
Sun, 26 Sep 2010 16:20:01 +0000 (18:20 +0200)
committerJan D <jan.h.d@swipnet.se>
Sun, 26 Sep 2010 16:20:01 +0000 (18:20 +0200)
commit3fad2ad22ee508b6926c71fb87d53728bbc8f240
treeeaa1219476afef2e98a481aaa95c00d21436d86d
parent6303aba12277fcac6a597908fb047560cf7c0c3e
Add fd handling with callbacks to select, dbus needs it for async operation.

* src/dbusbind.c: Include process.h.
(dbus_fd_cb, xd_find_watch_fd, xd_toggle_watch)
(xd_read_message_1): New functions.
(xd_add_watch, xd_remove_watch): Call xd_find_watch_fd.  Handle
watch for both read and write.
(Fdbus_init_bus): Also register xd_toggle_watch.
(Fdbus_call_method_asynchronously, Fdbus_method_return_internal)
(Fdbus_method_error_internal, Fdbus_send_signal): Remove call
to dbus_connection_flush.
(xd_read_message):  Move most of the code to xd_read_message_1.
Call xd_read_message_1 until status is COMPLETE.

* src/keyboard.c (readable_events, gobble_input): Remove DBUS code.

* src/process.c (gpm_wait_mask, max_gpm_desc): Remove.
(write_mask): New variable.
(max_input_desc): Renamed from max_keyboard_desc.
(fd_callback_info): New variable.
(add_read_fd, delete_read_fd, add_write_fd, delete_write_fd): New
functions.
(Fmake_network_process): FD_SET write_mask.
(deactivate_process): FD_CLR write_mask.
(wait_reading_process_output): Connecting renamed to Writeok.
check_connect removed.  check_write is new.  Remove references to
gpm.  Use Writeok/check_write unconditionally (i.e. no #ifdef
NON_BLOCKING_CONNECT) instead of Connecting.
Loop over file descriptors and call callbacks in fd_callback_info
if file descriptor is ready for I/O.
(add_gpm_wait_descriptor): Just call add_keyboard_wait_descriptor.
(delete_gpm_wait_descriptor): Just call delete_keyboard_wait_descriptor.
(keyboard_bit_set): Use max_input_desc.
(add_keyboard_wait_descriptor, delete_keyboard_wait_descriptor): Remove
#ifdef subprocesses. Use max_input_desc.
(init_process): Initialize write_mask and fd_callback_info.

* src/process.h (add_read_fd, delete_read_fd, add_write_fd)
(delete_write_fd): Declare.
src/ChangeLog
src/dbusbind.c
src/keyboard.c
src/process.c
src/process.h