Mercurial > projects > package-update-indicator
changeset 46:8ed91c5e0116
Explicitly schedule the initial check for updates after a fixed short delay
Explicitly schedule the first check after startup to run after a short delay
defined in PUI_STARTUP_DELAY. This was always intended but not correctly
handled before, the first check could thus take up to the number of seconds
defined in PUI_CHECK_UPDATES_INTERVAL.
author | Guido Berhoerster <guido+pui@berhoerster.name> |
---|---|
date | Mon, 09 Nov 2020 15:06:04 +0100 |
parents | 4a859595eabd |
children | 0d4bb2f8908a |
files | pui-backend.c |
diffstat | 1 files changed, 25 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/pui-backend.c Thu Nov 05 11:18:16 2020 +0100 +++ b/pui-backend.c Mon Nov 09 15:06:04 2020 +0100 @@ -290,23 +290,33 @@ g_debug("perioidic checks inhibited: low battery"); } } else { - /* schedule periodic checks when no longer inhibited */ - elapsed_time = (g_get_monotonic_time() - self->last_check) / - G_USEC_PER_SEC; - /* - * if more time that the check interval has passed since the - * last check, schedule a check after a short delay, otherwise - * wait until the interval has passed - */ - remaining_time = (elapsed_time < PUI_CHECK_UPDATES_INTERVAL) ? - PUI_CHECK_UPDATES_INTERVAL - elapsed_time : - PUI_STARTUP_DELAY; + if (self->last_check == 0) { + /* first check after startup */ + remaining_time = PUI_STARTUP_DELAY; + + g_debug("scheduled first check in: %ds", + remaining_time); + } else { + /* schedule periodic checks when no longer inhibited */ + elapsed_time = + (g_get_monotonic_time() - self->last_check) / + G_USEC_PER_SEC; + /* + * if more time than the check interval has passed + * since the last check, schedule a check after a short + * delay, otherwise wait until the interval has passed + */ + remaining_time = + (elapsed_time < PUI_CHECK_UPDATES_INTERVAL) ? + PUI_CHECK_UPDATES_INTERVAL - elapsed_time : + PUI_STARTUP_DELAY; + + g_debug("perioidic checks no longer inhibited, " + "time since last check: %ds, next check in: %ds", + elapsed_time, remaining_time); + } self->check_id = g_timeout_add_seconds(remaining_time, periodic_check, self); - - g_debug("perioidic checks no longer inhibited, time since " - "last check: %ds, next check in: %ds", elapsed_time, - remaining_time); } }