summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>2024-03-05 22:03:54 -0300
committerMatheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>2024-03-08 06:56:55 -0300
commit8bf652f213a0bb157400f67241e9cc421a183ada (patch)
tree4592da292028cdf1ed687baa13f5b73eb8d5b806
parentca40d101d30ef389a1ac49ddc6bcf53c552c088c (diff)
parentb1adbd548eabbf3212e9a53dbb8830d030b15fa7 (diff)
downloadSensor-Watch-8bf652f213a0bb157400f67241e9cc421a183ada.tar.gz
Sensor-Watch-8bf652f213a0bb157400f67241e9cc421a183ada.tar.bz2
Sensor-Watch-8bf652f213a0bb157400f67241e9cc421a183ada.zip
Merge branch 'timeout-event-and-sleep-logic'
Currently, movement drops timeout events in case the previous loop indicates that sleep is not possible. This is due to unintended short circuiting behavior of && and is fixed with a temporary variable. The static qualifier of can_sleep is also removed. Helped-by: Alex Maestas <git@se30.xyz> Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com> Tested-on-hardware-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com> Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com> GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/376
-rw-r--r--movement/movement.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/movement/movement.c b/movement/movement.c
index 816624d4..0b292a15 100644
--- a/movement/movement.c
+++ b/movement/movement.c
@@ -537,7 +537,7 @@ bool app_loop(void) {
}
// default to being allowed to sleep by the face.
- static bool can_sleep = true;
+ bool can_sleep = true;
if (event.event_type) {
event.subsecond = movement_state.subsecond;
@@ -561,7 +561,8 @@ bool app_loop(void) {
// first trip | can sleep | cannot sleep | can sleep | cannot sleep
// second trip | can sleep | cannot sleep | cannot sleep | can sleep
// && | can sleep | cannot sleep | cannot sleep | cannot sleep
- can_sleep = can_sleep && wf->loop(event, &movement_state.settings, watch_face_contexts[movement_state.current_face_idx]);
+ bool can_sleep2 = wf->loop(event, &movement_state.settings, watch_face_contexts[movement_state.current_face_idx]);
+ can_sleep = can_sleep && can_sleep2;
event.event_type = EVENT_NONE;
if (movement_state.settings.bit.to_always && movement_state.current_face_idx != 0) {
// ...but if the user has "timeout always" set, give it the boot.