From 71076926786abe29c94cc08d7298a3ddb5a055c1 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Fri, 18 Feb 2022 21:22:02 -0500 Subject: [PATCH 1/4] use --long for describe in setup.py-stubs --- setup.py-stubs | 2 +- tools/describe | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/setup.py-stubs b/setup.py-stubs index b09c47f739..9abfa348a9 100644 --- a/setup.py-stubs +++ b/setup.py-stubs @@ -43,7 +43,7 @@ setup( "root": "..", "relative_to": __file__, "local_scheme": local_scheme, - "git_describe_command": "tools/describe", + "git_describe_command": "tools/describe --long", }, zip_safe=False, ) diff --git a/tools/describe b/tools/describe index becdc1e5bd..7fd624abe3 100755 --- a/tools/describe +++ b/tools/describe @@ -1,2 +1,3 @@ #!/bin/sh -git describe --first-parent --dirty --tags --always --match "[1-9].*" +# Add any supplied arguments. +git describe --first-parent --dirty --tags --always --match "[1-9].*" "$@" From 03f42406d3eff3e55753ee624ac6832015393c1b Mon Sep 17 00:00:00 2001 From: Kevin Matocha Date: Sun, 20 Feb 2022 19:50:14 -0600 Subject: [PATCH 2/4] updated code so the REPL will retain its text if not resized when code stops --- shared-bindings/terminalio/Terminal.c | 2 +- shared-bindings/terminalio/Terminal.h | 2 +- shared-module/displayio/display_core.c | 3 ++- supervisor/shared/display.c | 5 ++++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/shared-bindings/terminalio/Terminal.c b/shared-bindings/terminalio/Terminal.c index cdeca59164..e9097af132 100644 --- a/shared-bindings/terminalio/Terminal.c +++ b/shared-bindings/terminalio/Terminal.c @@ -62,7 +62,7 @@ STATIC mp_obj_t terminalio_terminal_make_new(const mp_obj_type_t *type, size_t n terminalio_terminal_obj_t *self = m_new_obj(terminalio_terminal_obj_t); self->base.type = &terminalio_terminal_type; - common_hal_terminalio_terminal_construct(self, tilegrid, font); + common_hal_terminalio_terminal_construct(self, tilegrid, font, true); return MP_OBJ_FROM_PTR(self); } diff --git a/shared-bindings/terminalio/Terminal.h b/shared-bindings/terminalio/Terminal.h index f884edd6d5..a90f6456f6 100644 --- a/shared-bindings/terminalio/Terminal.h +++ b/shared-bindings/terminalio/Terminal.h @@ -34,7 +34,7 @@ extern const mp_obj_type_t terminalio_terminal_type; extern void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, - displayio_tilegrid_t *tilegrid, const fontio_builtinfont_t *font); + displayio_tilegrid_t *tilegrid, const fontio_builtinfont_t *font, const bool reset_tiles); // Write characters. len is in characters NOT bytes! extern size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *self, diff --git a/shared-module/displayio/display_core.c b/shared-module/displayio/display_core.c index 78e946823b..8b2f0bfdf8 100644 --- a/shared-module/displayio/display_core.c +++ b/shared-module/displayio/display_core.c @@ -169,8 +169,9 @@ bool displayio_display_core_show(displayio_display_core_t *self, displayio_group // force the circuit_python_splash out of any group (Note: could cause problems with the parent group) circuitpython_splash.x = 0; // reset position in case someone moved it. circuitpython_splash.y = 0; - supervisor_stop_terminal(); + supervisor_start_terminal(self->width, self->height); + root_group = &circuitpython_splash; } if (root_group == self->current_group) { diff --git a/supervisor/shared/display.c b/supervisor/shared/display.c index a4849a3c58..f68beaa544 100644 --- a/supervisor/shared/display.c +++ b/supervisor/shared/display.c @@ -61,6 +61,7 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) { #if CIRCUITPY_TERMINALIO displayio_tilegrid_t *grid = &supervisor_terminal_text_grid; bool tall = height_px > width_px; + bool reset_tiles = false; uint16_t terminal_width_px = tall ? width_px : width_px - blinka_bitmap.width; uint16_t terminal_height_px = tall ? height_px - blinka_bitmap.height : height_px; uint16_t width_in_tiles = terminal_width_px / grid->tile_width; @@ -86,10 +87,12 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) { if (get_allocation_length(tilegrid_tiles) != align32_size(total_tiles)) { free_memory(tilegrid_tiles); tilegrid_tiles = NULL; + reset_tiles = true; } } if (!tilegrid_tiles) { tilegrid_tiles = allocate_memory(align32_size(total_tiles), false, true); + reset_tiles = true; if (!tilegrid_tiles) { return; } @@ -111,7 +114,7 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) { grid->tiles = tiles; grid->full_change = true; - common_hal_terminalio_terminal_construct(&supervisor_terminal, grid, &supervisor_terminal_font); + common_hal_terminalio_terminal_construct(&supervisor_terminal, grid, &supervisor_terminal_font, reset_tiles); #endif circuitpython_splash.scale = scale; From 6b2266b2401320401299f97c2acc391c93821fc9 Mon Sep 17 00:00:00 2001 From: Kevin Matocha Date: Sun, 20 Feb 2022 22:44:30 -0600 Subject: [PATCH 3/4] retains REPL terminal data after display.show(None) when terminal size is not changed --- shared-module/terminalio/Terminal.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/shared-module/terminalio/Terminal.c b/shared-module/terminalio/Terminal.c index f0a69bde39..e3f3d12187 100644 --- a/shared-module/terminalio/Terminal.c +++ b/shared-module/terminalio/Terminal.c @@ -30,16 +30,18 @@ #include "shared-bindings/displayio/TileGrid.h" #include "shared-bindings/terminalio/Terminal.h" -void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, displayio_tilegrid_t *tilegrid, const fontio_builtinfont_t *font) { +void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, displayio_tilegrid_t *tilegrid, const fontio_builtinfont_t *font, const bool reset_tiles) { self->cursor_x = 0; self->cursor_y = 0; self->font = font; self->tilegrid = tilegrid; self->first_row = 0; - for (uint16_t x = 0; x < self->tilegrid->width_in_tiles; x++) { - for (uint16_t y = 0; y < self->tilegrid->height_in_tiles; y++) { - common_hal_displayio_tilegrid_set_tile(self->tilegrid, x, y, 0); + if (reset_tiles) { + for (uint16_t x = 0; x < self->tilegrid->width_in_tiles; x++) { + for (uint16_t y = 0; y < self->tilegrid->height_in_tiles; y++) { + common_hal_displayio_tilegrid_set_tile(self->tilegrid, x, y, 0); + } } } From 790af2d9a64d50301bf320a9045e42404a2f8a63 Mon Sep 17 00:00:00 2001 From: Kevin Matocha Date: Mon, 21 Feb 2022 14:58:16 -0600 Subject: [PATCH 4/4] fix REPL terminal garbled characters upon code.py finished --- shared-bindings/terminalio/Terminal.c | 2 +- shared-bindings/terminalio/Terminal.h | 2 +- shared-module/terminalio/Terminal.c | 11 +++---- supervisor/shared/display.c | 41 ++++++++++++++++----------- 4 files changed, 31 insertions(+), 25 deletions(-) diff --git a/shared-bindings/terminalio/Terminal.c b/shared-bindings/terminalio/Terminal.c index e9097af132..cdeca59164 100644 --- a/shared-bindings/terminalio/Terminal.c +++ b/shared-bindings/terminalio/Terminal.c @@ -62,7 +62,7 @@ STATIC mp_obj_t terminalio_terminal_make_new(const mp_obj_type_t *type, size_t n terminalio_terminal_obj_t *self = m_new_obj(terminalio_terminal_obj_t); self->base.type = &terminalio_terminal_type; - common_hal_terminalio_terminal_construct(self, tilegrid, font, true); + common_hal_terminalio_terminal_construct(self, tilegrid, font); return MP_OBJ_FROM_PTR(self); } diff --git a/shared-bindings/terminalio/Terminal.h b/shared-bindings/terminalio/Terminal.h index a90f6456f6..f884edd6d5 100644 --- a/shared-bindings/terminalio/Terminal.h +++ b/shared-bindings/terminalio/Terminal.h @@ -34,7 +34,7 @@ extern const mp_obj_type_t terminalio_terminal_type; extern void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, - displayio_tilegrid_t *tilegrid, const fontio_builtinfont_t *font, const bool reset_tiles); + displayio_tilegrid_t *tilegrid, const fontio_builtinfont_t *font); // Write characters. len is in characters NOT bytes! extern size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *self, diff --git a/shared-module/terminalio/Terminal.c b/shared-module/terminalio/Terminal.c index e3f3d12187..fc33533b17 100644 --- a/shared-module/terminalio/Terminal.c +++ b/shared-module/terminalio/Terminal.c @@ -30,18 +30,15 @@ #include "shared-bindings/displayio/TileGrid.h" #include "shared-bindings/terminalio/Terminal.h" -void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, displayio_tilegrid_t *tilegrid, const fontio_builtinfont_t *font, const bool reset_tiles) { +void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, displayio_tilegrid_t *tilegrid, const fontio_builtinfont_t *font) { self->cursor_x = 0; self->cursor_y = 0; self->font = font; self->tilegrid = tilegrid; self->first_row = 0; - - if (reset_tiles) { - for (uint16_t x = 0; x < self->tilegrid->width_in_tiles; x++) { - for (uint16_t y = 0; y < self->tilegrid->height_in_tiles; y++) { - common_hal_displayio_tilegrid_set_tile(self->tilegrid, x, y, 0); - } + for (uint16_t x = 0; x < self->tilegrid->width_in_tiles; x++) { + for (uint16_t y = 0; y < self->tilegrid->height_in_tiles; y++) { + common_hal_displayio_tilegrid_set_tile(self->tilegrid, x, y, 0); } } diff --git a/supervisor/shared/display.c b/supervisor/shared/display.c index f68beaa544..f991852414 100644 --- a/supervisor/shared/display.c +++ b/supervisor/shared/display.c @@ -82,6 +82,11 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) { uint16_t total_tiles = width_in_tiles * height_in_tiles; + // check if the terminal tile dimensions are the same + if ((grid->width_in_tiles != width_in_tiles) || + (grid->height_in_tiles != height_in_tiles)) { + reset_tiles = true; + } // Reuse the previous allocation if possible if (tilegrid_tiles) { 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) { return; } } - uint8_t *tiles = (uint8_t *)tilegrid_tiles->ptr; - grid->y = tall ? blinka_bitmap.height : 0; - grid->x = tall ? 0 : blinka_bitmap.width; - grid->top_left_y = 0; - if (remaining_pixels > 0) { - grid->y -= (grid->tile_height - remaining_pixels); + if (reset_tiles) { + uint8_t *tiles = (uint8_t *)tilegrid_tiles->ptr; + + grid->y = tall ? blinka_bitmap.height : 0; + grid->x = tall ? 0 : blinka_bitmap.width; + grid->top_left_y = 0; + if (remaining_pixels > 0) { + grid->y -= (grid->tile_height - remaining_pixels); + } + grid->width_in_tiles = width_in_tiles; + grid->height_in_tiles = height_in_tiles; + assert(width_in_tiles > 0); + assert(height_in_tiles > 0); + grid->pixel_width = width_in_tiles * grid->tile_width; + grid->pixel_height = height_in_tiles * grid->tile_height; + grid->tiles = tiles; + + grid->full_change = true; + + common_hal_terminalio_terminal_construct(&supervisor_terminal, grid, &supervisor_terminal_font); } - grid->width_in_tiles = width_in_tiles; - grid->height_in_tiles = height_in_tiles; - assert(width_in_tiles > 0); - assert(height_in_tiles > 0); - grid->pixel_width = width_in_tiles * grid->tile_width; - grid->pixel_height = height_in_tiles * grid->tile_height; - grid->tiles = tiles; - grid->full_change = true; - - common_hal_terminalio_terminal_construct(&supervisor_terminal, grid, &supervisor_terminal_font, reset_tiles); #endif circuitpython_splash.scale = scale;