]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
x11: periodically handle gtk events
authorTimo Teräs <timo.teras@iki.fi>
Wed, 22 Mar 2023 11:46:41 +0000 (13:46 +0200)
committerRay Strode <halfline@gmail.com>
Mon, 1 May 2023 17:02:29 +0000 (17:02 +0000)
GTK main loop needs to be called periodically to handle
any idle and timer based events which do not trigger via fd.

fixes #190

src/plugins/renderers/x11/plugin.c

index d6305fcd084bbf93e64e4ecb7cfdc29d2d340b8b..ab8b70ba2b8d4680460e900a299f960d312e9469 100644 (file)
@@ -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;