@@ -82,6 +82,11 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) {
82
82
83
83
uint16_t total_tiles = width_in_tiles * height_in_tiles ;
84
84
85
+ // check if the terminal tile dimensions are the same
86
+ if ((grid -> width_in_tiles != width_in_tiles ) ||
87
+ (grid -> height_in_tiles != height_in_tiles )) {
88
+ reset_tiles = true;
89
+ }
85
90
// Reuse the previous allocation if possible
86
91
if (tilegrid_tiles ) {
87
92
if (get_allocation_length (tilegrid_tiles ) != align32_size (total_tiles )) {
@@ -97,24 +102,28 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) {
97
102
return ;
98
103
}
99
104
}
100
- uint8_t * tiles = (uint8_t * )tilegrid_tiles -> ptr ;
101
105
102
- grid -> y = tall ? blinka_bitmap .height : 0 ;
103
- grid -> x = tall ? 0 : blinka_bitmap .width ;
104
- grid -> top_left_y = 0 ;
105
- if (remaining_pixels > 0 ) {
106
- grid -> y -= (grid -> tile_height - remaining_pixels );
107
- }
108
- grid -> width_in_tiles = width_in_tiles ;
109
- grid -> height_in_tiles = height_in_tiles ;
110
- assert (width_in_tiles > 0 );
111
- assert (height_in_tiles > 0 );
112
- grid -> pixel_width = width_in_tiles * grid -> tile_width ;
113
- grid -> pixel_height = height_in_tiles * grid -> tile_height ;
114
- grid -> tiles = tiles ;
115
- grid -> full_change = true;
106
+ if (reset_tiles ) {
107
+ uint8_t * tiles = (uint8_t * )tilegrid_tiles -> ptr ;
116
108
117
- common_hal_terminalio_terminal_construct (& supervisor_terminal , grid , & supervisor_terminal_font , reset_tiles );
109
+ grid -> y = tall ? blinka_bitmap .height : 0 ;
110
+ grid -> x = tall ? 0 : blinka_bitmap .width ;
111
+ grid -> top_left_y = 0 ;
112
+ if (remaining_pixels > 0 ) {
113
+ grid -> y -= (grid -> tile_height - remaining_pixels );
114
+ }
115
+ grid -> width_in_tiles = width_in_tiles ;
116
+ grid -> height_in_tiles = height_in_tiles ;
117
+ assert (width_in_tiles > 0 );
118
+ assert (height_in_tiles > 0 );
119
+ grid -> pixel_width = width_in_tiles * grid -> tile_width ;
120
+ grid -> pixel_height = height_in_tiles * grid -> tile_height ;
121
+ grid -> tiles = tiles ;
122
+
123
+ grid -> full_change = true;
124
+
125
+ common_hal_terminalio_terminal_construct (& supervisor_terminal , grid , & supervisor_terminal_font );
126
+ }
118
127
#endif
119
128
120
129
circuitpython_splash .scale = scale ;
0 commit comments