diff options
| author | Jeff Epler <jepler@gmail.com> | 2020-03-28 10:34:18 -0500 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2020-04-14 18:24:54 -0500 |
| commit | 6378d600c40d462836fd6599b9bdadf5e78df8f1 (patch) | |
| tree | fa07a6b9db7fcf097c3ee5f05615f2741ffd6aae /shared-module | |
| parent | ada102dd986bb03186978579cc909da5c66772d6 (diff) | |
displayio: implement, use allocate_display_or_raise
Diffstat (limited to 'shared-module')
| -rw-r--r-- | shared-module/displayio/__init__.c | 18 | ||||
| -rw-r--r-- | shared-module/displayio/__init__.h | 3 |
2 files changed, 21 insertions, 0 deletions
diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c index efa61265e..fd58a0322 100644 --- a/shared-module/displayio/__init__.c +++ b/shared-module/displayio/__init__.c @@ -308,3 +308,21 @@ void displayio_area_transform_within(bool mirror_x, bool mirror_y, bool transpos transformed->x1 = whole->x1 + (y1 - whole->y1); } } + +primary_display_t *allocate_display() { + 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_or_raise() { + primary_display_t *result = allocate_display(); + if (!result) { + mp_raise_RuntimeError(translate("Too many displays")); + } +} + +} diff --git a/shared-module/displayio/__init__.h b/shared-module/displayio/__init__.h index e78bc61ce..4e1297c8d 100644 --- a/shared-module/displayio/__init__.h +++ b/shared-module/displayio/__init__.h @@ -54,4 +54,7 @@ void displayio_background(void); void reset_displays(void); void displayio_gc_collect(void); +primary_display_t *allocate_display(void); +primary_display_t *allocate_display_or_raise(void); + #endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO___INIT___H |
