summaryrefslogtreecommitdiff
path: root/shared-module
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2020-03-30 10:47:14 -0500
committerJeff Epler <jepler@gmail.com>2020-04-14 18:24:54 -0500
commit8cba145c90294a001ec5814fb501a7b96a055780 (patch)
treef66dd388907d61c38df378e51635ae7cc6db4224 /shared-module
parent6378d600c40d462836fd6599b9bdadf5e78df8f1 (diff)
displayio: implement, use allocate_new_display_bus_or_raise
Diffstat (limited to 'shared-module')
-rw-r--r--shared-module/displayio/__init__.c17
-rw-r--r--shared-module/displayio/__init__.h2
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