diff options
author | Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com> | 2024-03-05 22:03:54 -0300 |
---|---|---|
committer | Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com> | 2024-03-08 06:56:55 -0300 |
commit | 8bf652f213a0bb157400f67241e9cc421a183ada (patch) | |
tree | 4592da292028cdf1ed687baa13f5b73eb8d5b806 /movement/movement.c | |
parent | ca40d101d30ef389a1ac49ddc6bcf53c552c088c (diff) | |
parent | b1adbd548eabbf3212e9a53dbb8830d030b15fa7 (diff) | |
download | Sensor-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
Diffstat (limited to 'movement/movement.c')
-rw-r--r-- | movement/movement.c | 5 |
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. |