From 38500b14d8513b3384a77f1f8b0e17ebd408ce85 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Mon, 10 Aug 2026 21:09:50 -0400 Subject: [PATCH] Write app glance in wakeup_schedule_simple_robust to ensure time is accurate --- src/c/main.c | 16 +--------------- src/c/{gentlewake.c => scheduler.c} | 18 ++++++++++++++++-- src/c/{gentlewake.h => scheduler.h} | 0 3 files changed, 17 insertions(+), 17 deletions(-) rename src/c/{gentlewake.c => scheduler.c} (55%) rename src/c/{gentlewake.h => scheduler.h} (100%) diff --git a/src/c/main.c b/src/c/main.c index 4418547..e2e41b4 100644 --- a/src/c/main.c +++ b/src/c/main.c @@ -1,4 +1,4 @@ -#include "gentlewake.h" +#include "scheduler.h" #include "triangles.h" #include #include @@ -89,19 +89,6 @@ static char *s_options_under[2]; ///////////////////////////////// -static void glance_reload_callback(AppGlanceReloadSession *session, size_t limit, void *target) { - static char s_glance_buffer[22]; - time_t alarm_time = (time_t)(uintptr_t)target; - struct tm wakeup_tm = *localtime(&alarm_time); - snprintf(s_glance_buffer, sizeof(s_glance_buffer), "%02u:%02u:%02u, %02u/%02u", wakeup_tm.tm_hour, wakeup_tm.tm_min, wakeup_tm.tm_sec, wakeup_tm.tm_mon, wakeup_tm.tm_mday); - AppGlanceSlice slice = { - .expiration_time = (time_t)(uintptr_t)target, - .layout.icon = APP_GLANCE_SLICE_DEFAULT_ICON, - .layout.subtitle_template_string = s_glance_buffer, - }; - app_glance_add_slice(session, slice); -} - static bool schedule_alarm(bool is_fallback) { time_t target; WakeupId status; @@ -127,7 +114,6 @@ static bool schedule_alarm(bool is_fallback) { } s_the_time.HourSet = s_the_time.HourWIP; s_the_time.MinuteSet = s_the_time.MinuteWIP; - app_glance_reload(glance_reload_callback, (void *)(uintptr_t)target); return true; } diff --git a/src/c/gentlewake.c b/src/c/scheduler.c similarity index 55% rename from src/c/gentlewake.c rename to src/c/scheduler.c index 8ab45b7..c6aca9f 100644 --- a/src/c/gentlewake.c +++ b/src/c/scheduler.c @@ -1,7 +1,19 @@ -// lol the code in this file is mostly stolen from https://github.com/SeaPea/GentleWake - #include +static void glance_reload_callback(AppGlanceReloadSession *session, size_t limit, void *target) { + static char s_glance_buffer[22]; + time_t alarm_time = (time_t)(uintptr_t)target; + struct tm wakeup_tm = *localtime(&alarm_time); + snprintf(s_glance_buffer, sizeof(s_glance_buffer), "%02u:%02u:%02u, %02u/%02u", wakeup_tm.tm_hour, wakeup_tm.tm_min, wakeup_tm.tm_sec, wakeup_tm.tm_mon, wakeup_tm.tm_mday); + AppGlanceSlice slice = { + .expiration_time = (time_t)(uintptr_t)target, + .layout.icon = APP_GLANCE_SLICE_DEFAULT_ICON, + .layout.subtitle_template_string = s_glance_buffer, + }; + app_glance_add_slice(session, slice); +} + +// Mostly stolen from https://github.com/SeaPea/GentleWake; // A slightly more robust wakeup scheduler that retries on certain errors and // can retry for a different wakeup time offset by retry_diff up to retry_max times WakeupId wakeup_schedule_simple_robust(time_t wakeup_time, int8_t retry_diff, bool is_fallback) { @@ -24,6 +36,8 @@ WakeupId wakeup_schedule_simple_robust(time_t wakeup_time, int8_t retry_diff, bo result = wakeup_schedule(wakeup_time, is_fallback, true); } } + } else { + app_glance_reload(glance_reload_callback, (void *)(uintptr_t)wakeup_time); } return result; diff --git a/src/c/gentlewake.h b/src/c/scheduler.h similarity index 100% rename from src/c/gentlewake.h rename to src/c/scheduler.h