• Jan D's avatar
    Add fd handling with callbacks to select, dbus needs it for async operation. · 3fad2ad2
    Jan D authored
    * 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.
    3fad2ad2
process.c 219 KB