@@ -56,8 +56,8 @@ mp_int_t max_allocated_display = CIRCUITPY_DISPLAY_LIMIT;
5656primary_display_bus_t display_buses [CIRCUITPY_DISPLAY_LIMIT ];
5757primary_display_t displays [CIRCUITPY_DISPLAY_LIMIT ];
5858#if CIRCUITPY_OS_GETENV && CIRCUITPY_SET_DISPLAY_LIMIT
59- primary_display_bus_t * display_buses_dyn = & display_buses [ 0 ] ;
60- primary_display_t * displays_dyn = & displays [ 0 ] ;
59+ primary_display_bus_t * display_buses_dyn ;
60+ primary_display_t * displays_dyn ;
6161#define DYN_DISPLAY_BUSES (indx ) (indx < CIRCUITPY_DISPLAY_LIMIT ? display_buses[indx] : display_buses_dyn[indx - CIRCUITPY_DISPLAY_LIMIT])
6262#define DYN_DISPLAY_BUSES_ADR (indx , membr ) (indx < CIRCUITPY_DISPLAY_LIMIT ? &display_buses[indx].membr : &display_buses_dyn[indx - CIRCUITPY_DISPLAY_LIMIT].membr)
6363#define DYN_DISPLAY_BUSES_ADR0 (indx ) (indx < CIRCUITPY_DISPLAY_LIMIT ? &display_buses[indx] : &display_buses_dyn[indx - CIRCUITPY_DISPLAY_LIMIT])
@@ -260,9 +260,9 @@ void reset_displays(void) {
260260 m_del (primary_display_t , displays_dyn , (max_allocated_display - CIRCUITPY_DISPLAY_LIMIT ));
261261 display_buses_dyn = NULL ;
262262 displays_dyn = NULL ;
263+ // Set dynamically allocated displays to 0 (CIRCUITPY_DISPLAY_LIMIT)
264+ max_allocated_display = CIRCUITPY_DISPLAY_LIMIT ;
263265 }
264- // Set dynamically allocated displays to 0 (CIRCUITPY_DISPLAY_LIMIT)
265- max_allocated_display = CIRCUITPY_DISPLAY_LIMIT ;
266266 #endif
267267
268268 // The SPI buses used by FourWires may be allocated on the heap so we need to move them inline.
@@ -498,6 +498,10 @@ primary_display_t *allocate_display(void) {
498498 #else
499499 displays [i ].display_base .type = & mp_type_NoneType ;
500500 #endif
501+ if (i == 0 ) {
502+ // The first display is the primary display.
503+ primary_display_number = 0 ;
504+ }
501505 return DYN_DISPLAYS_ADR0 (i );
502506 }
503507 }
0 commit comments