diff options
| author | Dan Halbert <halbert@halwitz.org> | 2019-02-28 22:36:50 -0500 |
|---|---|---|
| committer | Dan Halbert <halbert@halwitz.org> | 2019-02-28 22:36:50 -0500 |
| commit | ced37c10015464be575e8f1b0ae9a1838f34c45c (patch) | |
| tree | b6bfc65d371ff72b63707790f3688a3ea59d9d9e /shared-module/displayio/__init__.c | |
| parent | 2c9fbb5d40c457e87a4c0db3906960484f3668c0 (diff) | |
Don't wait for display frame if interrupt pending
Diffstat (limited to 'shared-module/displayio/__init__.c')
| -rw-r--r-- | shared-module/displayio/__init__.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c index 0d35abf0f..79014fb5a 100644 --- a/shared-module/displayio/__init__.c +++ b/shared-module/displayio/__init__.c @@ -2,7 +2,9 @@ #include <string.h> #include "shared-module/displayio/__init__.h" +#include "lib/utils/interrupt_char.h" #include "py/reload.h" +#include "py/runtime.h" #include "shared-bindings/displayio/Bitmap.h" #include "shared-bindings/displayio/Display.h" #include "shared-bindings/displayio/Group.h" @@ -23,8 +25,12 @@ static inline void swap(uint16_t* a, uint16_t* b) { bool refreshing_displays = false; void displayio_refresh_displays(void) { + if (mp_hal_is_interrupted()) { + return; + } // Somehow reloads from the sdcard are being lost. So, cheat and reraise. - if (reload_requested) { + // But don't re-raise if already pending. + if (reload_requested && MP_STATE_VM(mp_pending_exception) == MP_OBJ_NULL) { mp_raise_reload_exception(); return; } |
