From: Timo Teräs Date: Wed, 22 Mar 2023 11:46:41 +0000 (+0200) Subject: x11: periodically handle gtk events X-Git-Tag: 23.51.283~28^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=261f305b50d50d65b6954351e1745d5acd3c8253;p=thirdparty%2Fplymouth.git x11: periodically handle gtk events GTK main loop needs to be called periodically to handle any idle and timer based events which do not trigger via fd. fixes #190 --- diff --git a/src/plugins/renderers/x11/plugin.c b/src/plugins/renderers/x11/plugin.c index d6305fcd..ab8b70ba 100644 --- a/src/plugins/renderers/x11/plugin.c +++ b/src/plugins/renderers/x11/plugin.c @@ -164,6 +164,17 @@ on_display_event (ply_renderer_backend_t *backend) } } +static void +on_timeout_event (ply_renderer_backend_t *backend, + ply_event_loop_t *loop) +{ + on_display_event (backend); + + ply_event_loop_watch_for_timeout (loop, 0.02, + (ply_event_loop_timeout_handler_t) on_timeout_event, + backend); +} + static bool open_device (ply_renderer_backend_t *backend) { @@ -182,6 +193,10 @@ open_device (ply_renderer_backend_t *backend) NULL, backend); + ply_event_loop_watch_for_timeout (backend->loop, 0.02, + (ply_event_loop_timeout_handler_t) on_timeout_event, + backend); + return true; } @@ -194,6 +209,9 @@ get_device_name (ply_renderer_backend_t *backend) static void close_device (ply_renderer_backend_t *backend) { + ply_event_loop_stop_watching_for_timeout (backend->loop, + (ply_event_loop_timeout_handler_t) on_display_event, + backend); ply_event_loop_stop_watching_fd (backend->loop, backend->display_watch); backend->display_watch = NULL; return;