2222
2323#include "py/mpconfig.h"
2424
25- #if CIRCUITPY_OS_GETENV
25+ #if CIRCUITPY_OS_GETENV && CIRCUITPY_SET_DISPLAY_LIMIT
2626#include "shared-module/os/__init__.h"
2727#endif
2828
@@ -54,7 +54,7 @@ static mp_int_t max_num_displays = CIRCUITPY_DISPLAY_LIMIT;
5454
5555primary_display_bus_t display_buses [CIRCUITPY_DISPLAY_LIMIT ];
5656primary_display_t displays [CIRCUITPY_DISPLAY_LIMIT ];
57- #if CIRCUITPY_OS_GETENV
57+ #if CIRCUITPY_OS_GETENV && CIRCUITPY_SET_DISPLAY_LIMIT
5858primary_display_bus_t * display_buses_dyn = & display_buses [0 ];
5959primary_display_t * displays_dyn = & displays [0 ];
6060#define DYN_DISPLAY_BUSES (indx ) (indx < CIRCUITPY_DISPLAY_LIMIT ? display_buses[indx] : display_buses_dyn[indx - CIRCUITPY_DISPLAY_LIMIT])
@@ -159,13 +159,15 @@ static void common_hal_displayio_release_displays_impl(bool keep_primary) {
159159 release_framebufferdisplay (DYN_DISPLAYS_ADR (i , framebuffer_display ));
160160 #endif
161161 }
162+ #if CIRCUITPY_OS_GETENV && CIRCUITPY_SET_DISPLAY_LIMIT
162163 if (i < CIRCUITPY_DISPLAY_LIMIT ) {
163164 displays [i ].display_base .type = & mp_type_NoneType ;
164- #if CIRCUITPY_OS_GETENV
165165 } else {
166166 displays_dyn [i - CIRCUITPY_DISPLAY_LIMIT ].display_base .type = & mp_type_NoneType ;
167- #endif
168167 }
168+ #else
169+ displays [i ].display_base .type = & mp_type_NoneType ;
170+ #endif
169171 }
170172 for (uint8_t i = 0 ; i < max_num_displays ; i ++ ) {
171173 mp_const_obj_t bus_type = DYN_DISPLAY_BUSES (i ).bus_base .type ;
@@ -208,13 +210,15 @@ static void common_hal_displayio_release_displays_impl(bool keep_primary) {
208210 common_hal_picodvi_framebuffer_deinit (DYN_DISPLAY_BUSES_ADR (i , picodvi ));
209211 #endif
210212 }
213+ #if CIRCUITPY_OS_GETENV && CIRCUITPY_SET_DISPLAY_LIMIT
211214 if (i < CIRCUITPY_DISPLAY_LIMIT ) {
212215 display_buses [i ].bus_base .type = & mp_type_NoneType ;
213- #if CIRCUITPY_OS_GETENV
214216 } else {
215217 display_buses_dyn [i - CIRCUITPY_DISPLAY_LIMIT ].bus_base .type = & mp_type_NoneType ;
216- #endif
217218 }
219+ #else
220+ display_buses [i ].bus_base .type = & mp_type_NoneType ;
221+ #endif
218222 }
219223
220224 supervisor_stop_terminal ();
@@ -225,7 +229,7 @@ void common_hal_displayio_release_displays(void) {
225229}
226230
227231void malloc_display_memory (void ) {
228- #if CIRCUITPY_OS_GETENV
232+ #if CIRCUITPY_OS_GETENV && CIRCUITPY_SET_DISPLAY_LIMIT
229233 (void )common_hal_os_getenv_int ("CIRCUITPY_DISPLAY_LIMIT" , & max_num_displays );
230234 if (max_num_displays > CIRCUITPY_DISPLAY_LIMIT ) {
231235 display_buses_dyn = (primary_display_bus_t * )port_malloc (sizeof (primary_display_bus_t ) * (max_num_displays - CIRCUITPY_DISPLAY_LIMIT ), false);
@@ -470,13 +474,15 @@ primary_display_t *allocate_display(void) {
470474// memset(DYN_DISPLAYS_ADR0(i), 0, sizeof(DYN_DISPLAYS(i)));
471475 memset (DYN_DISPLAYS_ADR0 (i ), 0 , sizeof (displays [0 ]));
472476 // Default to None so that it works as board.DISPLAY.
477+ #if CIRCUITPY_OS_GETENV && CIRCUITPY_SET_DISPLAY_LIMIT
473478 if (i < CIRCUITPY_DISPLAY_LIMIT ) {
474479 displays [i ].display_base .type = & mp_type_NoneType ;
475- #if CIRCUITPY_OS_GETENV
476480 } else {
477481 displays_dyn [i - CIRCUITPY_DISPLAY_LIMIT ].display_base .type = & mp_type_NoneType ;
478- #endif
479482 }
483+ #else
484+ displays [i ].display_base .type = & mp_type_NoneType ;
485+ #endif
480486 return DYN_DISPLAYS_ADR0 (i );
481487 }
482488 }
@@ -498,13 +504,15 @@ primary_display_bus_t *allocate_display_bus(void) {
498504 // Clear this memory so it is in a known state before init.
499505// memset(DYN_DISPLAY_BUSES_ADR0(i), 0, sizeof(DYN_DISPLAY_BUSES(i)));
500506 memset (DYN_DISPLAY_BUSES_ADR0 (i ), 0 , sizeof (display_buses [0 ]));
507+ #if CIRCUITPY_OS_GETENV && CIRCUITPY_SET_DISPLAY_LIMIT
501508 if (i < CIRCUITPY_DISPLAY_LIMIT ) {
502509 display_buses [i ].bus_base .type = & mp_type_NoneType ;
503- #if CIRCUITPY_OS_GETENV
504510 } else {
505511 display_buses_dyn [i - CIRCUITPY_DISPLAY_LIMIT ].bus_base .type = & mp_type_NoneType ;
506- #endif
507512 }
513+ #else
514+ display_buses [i ].bus_base .type = & mp_type_NoneType ;
515+ #endif
508516 return DYN_DISPLAY_BUSES_ADR0 (i );
509517 }
510518 }
0 commit comments