From: Ray Strode Date: Mon, 10 Aug 2009 17:47:41 +0000 (-0400) Subject: [window] Handle disconnected tty fd better X-Git-Tag: 0.7.0~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=106ee5505d2cf384bb29c0af6815aa30112ebae7;p=thirdparty%2Fplymouth.git [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. --- diff --git a/src/libplybootsplash/ply-window.c b/src/libplybootsplash/ply-window.c index 36a3c136..8fa60377 100644 --- a/src/libplybootsplash/ply-window.c +++ b/src/libplybootsplash/ply-window.c @@ -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