[window] Handle disconnected tty fd better

Right now if we ever get a hangup from the mainloop
on the tty fd then the window's fd watch on the tty
becomes invalid and we will ultimately crash when
trying to disconnect the watch later.

This commit sets the watch to NULL if a hang up happens,
and adds some debug spew.
This commit is contained in:
Ray Strode 2009-08-10 13:47:41 -04:00
parent 82c9f34450
commit 106ee5505d

View file

@ -417,6 +417,13 @@ on_key_event (ply_window_t *window)
check_buffer_for_key_events (window);
}
static void
on_tty_disconnected (ply_window_t *window)
{
ply_trace ("tty disconnected (fd %d)", window->tty_fd);
window->tty_fd_watch = NULL;
}
static bool
ply_window_set_unbuffered_input (ply_window_t *window)
{
@ -573,7 +580,8 @@ ply_window_open (ply_window_t *window)
window->tty_fd_watch = ply_event_loop_watch_fd (window->loop, window->tty_fd,
PLY_EVENT_LOOP_FD_STATUS_HAS_DATA,
(ply_event_handler_t) on_key_event,
NULL, window);
(ply_event_handler_t) on_tty_disconnected,
window);
/* We try to open the frame buffer, but it may fail. splash plugins can check
* to see if it's open and react accordingly