diff options
| author | Jeff Epler <jepler@gmail.com> | 2020-03-30 10:47:14 -0500 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2020-04-14 18:24:54 -0500 |
| commit | 8cba145c90294a001ec5814fb501a7b96a055780 (patch) | |
| tree | f66dd388907d61c38df378e51635ae7cc6db4224 /shared-module/displayio | |
| parent | 6378d600c40d462836fd6599b9bdadf5e78df8f1 (diff) | |
displayio: implement, use allocate_new_display_bus_or_raise
Diffstat (limited to 'shared-module/displayio')
| -rw-r--r-- | shared-module/displayio/__init__.c | 17 | ||||
| -rw-r--r-- | shared-module/displayio/__init__.h | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c index fd58a0322..4844dfe60 100644 --- a/shared-module/displayio/__init__.c +++ b/shared-module/displayio/__init__.c @@ -326,3 +326,20 @@ primary_display_t *allocate_display_or_raise() { } } +primary_display_t *allocate_display_bus(void) { + for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) { + mp_const_obj_t display_type = displays[i].display.base.type; + if (display_type == NULL || display_type == &mp_type_NoneType) { + return &displays[i]; + } + } + return NULL; +} + +primary_display_t *allocate_display_bus_or_raise(void) { + primary_display_t *result = allocate_display_bus(); + if (result) { + return result; + } + mp_raise_RuntimeError(translate("Too many display busses")); +} diff --git a/shared-module/displayio/__init__.h b/shared-module/displayio/__init__.h index 4e1297c8d..638c2091e 100644 --- a/shared-module/displayio/__init__.h +++ b/shared-module/displayio/__init__.h @@ -56,5 +56,7 @@ void displayio_gc_collect(void); primary_display_t *allocate_display(void); primary_display_t *allocate_display_or_raise(void); +primary_display_t *allocate_display_bus(void); +primary_display_t *allocate_display_bus_or_raise(void); #endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO___INIT___H |
