]> git.earman.xyz Git - sensor-watch.git/commitdiff
movement: refactor timeout to tick first, then notify
authorJoey Castillo <jose.castillo@gmail.com>
Sun, 7 Nov 2021 04:29:27 +0000 (00:29 -0400)
committerJoey Castillo <jose.castillo@gmail.com>
Sun, 7 Nov 2021 04:29:27 +0000 (00:29 -0400)
movement/movement.c
movement/watch_faces/clock/simple_clock_face.c

index 5622f17fc99d33c09e0104ba05826606e31bdcc0..643fc6725ada9b9598166305be96c5a66e41be31 100644 (file)
@@ -143,11 +143,6 @@ bool app_loop() {
         }
     }
 
-    // if we have timed out of our timeout countdown, give the app a hint that they can resign.
-    if (movement_state.timeout_ticks == 0) {
-        event.event_type = EVENT_TIMEOUT;
-    }
-
     // handle background tasks, if the alarm handler told us we need to
     if (movement_state.needs_background_tasks_handled) _movement_handle_background_tasks();
 
@@ -181,9 +176,18 @@ bool app_loop() {
         event.subsecond = movement_state.subsecond;
         can_sleep = watch_faces[movement_state.current_watch_face].loop(event, &movement_state.settings, watch_face_contexts[movement_state.current_watch_face]);
         event.event_type = EVENT_NONE;
-        event.subsecond = 0;
     }
 
+    // if we have timed out of our timeout countdown, give the app a hint that they can resign.
+    if (movement_state.timeout_ticks == 0) {
+        event.event_type = EVENT_TIMEOUT;
+        event.subsecond = movement_state.subsecond;
+        watch_faces[movement_state.current_watch_face].loop(event, &movement_state.settings, watch_face_contexts[movement_state.current_watch_face]);
+        event.event_type = EVENT_NONE;
+    }
+
+    event.subsecond = 0;
+
     return can_sleep && !movement_state.led_on;
 }
 
index 9e279d95a6f6b5cf4e2b007eabe710fecbca9993..72f7713f00bfe3f1573b32ae49881a8f90cce8a5 100644 (file)
@@ -28,7 +28,6 @@ bool simple_clock_face_loop(movement_event_t event, movement_settings_t *setting
     switch (event.event_type) {
         case EVENT_ACTIVATE:
         case EVENT_TICK:
-        case EVENT_TIMEOUT:
         case EVENT_LOW_ENERGY_UPDATE:
             date_time = watch_rtc_get_date_time();
             previous_date_time = *((uint32_t *)context);