From: Ray Strode Date: Fri, 5 Mar 2010 18:15:39 +0000 (-0500) Subject: [drm] reconnect input source on disconnect X-Git-Tag: 0.8.0~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb96d5ad128a2c9bdedf755a8186a1d8bc929063;p=thirdparty%2Fplymouth.git [drm] reconnect input source on disconnect This is like 6f8d51c2cb2f46eac4c2040f5fc8512f65c8d2da but for the drm renderer. --- diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c index 5e9c0485..4bc93e44 100644 --- a/src/plugins/renderers/drm/plugin.c +++ b/src/plugins/renderers/drm/plugin.c @@ -82,6 +82,7 @@ struct _ply_renderer_head struct _ply_renderer_input_source { + ply_renderer_backend_t *backend; ply_fd_watch_t *terminal_input_watch; ply_buffer_t *key_buffer; @@ -117,6 +118,8 @@ struct _ply_renderer_backend ply_renderer_plugin_interface_t *ply_renderer_backend_get_interface (void); static void ply_renderer_head_redraw (ply_renderer_backend_t *backend, ply_renderer_head_t *head); +static bool open_input_source (ply_renderer_backend_t *backend, + ply_renderer_input_source_t *input_source); static ply_renderer_head_t * ply_renderer_head_new (ply_renderer_backend_t *backend, @@ -1049,6 +1052,14 @@ on_key_event (ply_renderer_input_source_t *input_source, } +static void +on_input_source_disconnected (ply_renderer_input_source_t *input_source) +{ + ply_trace ("input source disconnected, reopening"); + + open_input_source (input_source->backend, input_source); +} + static bool open_input_source (ply_renderer_backend_t *backend, ply_renderer_input_source_t *input_source) @@ -1060,9 +1071,11 @@ open_input_source (ply_renderer_backend_t *backend, terminal_fd = ply_terminal_get_fd (backend->terminal); + input_source->backend = backend; input_source->terminal_input_watch = ply_event_loop_watch_fd (backend->loop, terminal_fd, PLY_EVENT_LOOP_FD_STATUS_HAS_DATA, (ply_event_handler_t) on_key_event, - NULL, input_source); + (ply_event_handler_t) + on_input_source_disconnected, input_source); return true; } @@ -1088,6 +1101,7 @@ close_input_source (ply_renderer_backend_t *backend, ply_event_loop_stop_watching_fd (backend->loop, input_source->terminal_input_watch); input_source->terminal_input_watch = NULL; + input_source->backend = NULL; } ply_renderer_plugin_interface_t *