From: Hans de Goede Date: Wed, 16 Jan 2019 11:51:05 +0000 (+0100) Subject: ply-boot-splash: Do not add ply_boot_splash_update_progress timeout multiple times X-Git-Tag: 0.9.5~73^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a1920e8af9530b3504811ef04c0400cf7b53da3c;p=thirdparty%2Fplymouth.git ply-boot-splash: Do not add ply_boot_splash_update_progress timeout multiple times Before this commit when freeing the splash, the following would be logged: multiple matching timeouts found for removal multiple matching timeouts found for removal This is caused by us adding the ply_boot_splash_update_progress timeout handler to the event loop 3 times: 1 on first show, 2 on second show with a different mode, 3 on becoming idle. This commit fixes the 2nd add by stopping the timer when changing modes and the 3th add by not calling ply_boot_splash_update_progress to update the progress, as that will re-add itself. Instead this commit directly calls plugin_interface->on_boot_progress from ply_boot_splash_become_idle. Signed-off-by: Hans de Goede --- diff --git a/src/libply-splash-core/ply-boot-splash.c b/src/libply-splash-core/ply-boot-splash.c index 54c76965..9549eccc 100644 --- a/src/libply-splash-core/ply-boot-splash.c +++ b/src/libply-splash-core/ply-boot-splash.c @@ -476,6 +476,11 @@ ply_boot_splash_show (ply_boot_splash_t *splash, } else if (splash->mode != PLY_BOOT_SPLASH_MODE_INVALID) { splash->plugin_interface->hide_splash_screen (splash->plugin, splash->loop); + if (splash->plugin_interface->on_boot_progress != NULL) { + ply_event_loop_stop_watching_for_timeout (splash->loop, + (ply_event_loop_timeout_handler_t) + ply_boot_splash_update_progress, splash); + } } ply_trace ("showing splash screen"); @@ -671,9 +676,12 @@ ply_boot_splash_become_idle (ply_boot_splash_t *splash, { assert (splash->idle_trigger == NULL); - if (splash->progress != NULL) { + if (splash->plugin_interface->on_boot_progress != NULL && + splash->progress != NULL) { ply_progress_set_percentage (splash->progress, 1.0); - ply_boot_splash_update_progress (splash); + splash->plugin_interface->on_boot_progress (splash->plugin, + ply_progress_get_time (splash->progress), + 1.0); } ply_trace ("telling splash to become idle");