diff options
| author | Dan Halbert <halbert@adafruit.com> | 2019-06-13 08:29:12 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-13 08:29:12 -0400 |
| commit | 6be7cf7440acb827d4b0f767b6083a859499b045 (patch) | |
| tree | 55834cab63123bb95a2b7d329ff78442f34cfe6b /supervisor | |
| parent | a06a97e2cba36233d229ba44c3acd9007affe1c9 (diff) | |
| parent | 6f6dcafd906b2ac49291f4220f3fcc7cea6112e1 (diff) | |
Merge pull request #1940 from tannewt/dirty_area
Add partial display update support.
Diffstat (limited to 'supervisor')
| -rw-r--r-- | supervisor/shared/display.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/supervisor/shared/display.c b/supervisor/shared/display.c index 5eab74e16..c3afb3e00 100644 --- a/supervisor/shared/display.c +++ b/supervisor/shared/display.c @@ -50,6 +50,10 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) { } width_in_tiles = (width_px - blinka_bitmap.width * scale) / (grid->tile_width * scale); uint16_t height_in_tiles = height_px / (grid->tile_height * scale); + uint16_t remaining_pixels = height_px % (grid->tile_height * scale); + if (remaining_pixels > 0) { + height_in_tiles += 1; + } circuitpython_splash.scale = scale; uint16_t total_tiles = width_in_tiles * height_in_tiles; @@ -67,11 +71,13 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) { if (tiles == NULL) { return; } - + 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; - grid->area.x2 = grid->area.x1 + width_in_tiles * grid->tile_width; - grid->area.y2 = grid->area.y1 + height_in_tiles * grid->tile_height; + grid->pixel_width = width_in_tiles * grid->tile_width; + grid->pixel_height = height_in_tiles * grid->tile_height; grid->tiles = tiles; supervisor_terminal.cursor_x = 0; @@ -157,12 +163,10 @@ displayio_tilegrid_t blinka_sprite = { .base = {.type = &displayio_tilegrid_type }, .bitmap = &blinka_bitmap, .pixel_shader = &blinka_palette, - .area = { - .x1 = 0, - .y1 = 0, - .x2 = 16, - .y2 = 16 - }, + .x = 0, + .y = 0, + .pixel_width = 16, + .pixel_height = 16, .bitmap_width_in_tiles = 1, .width_in_tiles = 1, .height_in_tiles = 1, @@ -171,8 +175,12 @@ displayio_tilegrid_t blinka_sprite = { .top_left_x = 16, .top_left_y = 16, .tiles = 0, - .needs_refresh = false, - .inline_tiles = true + .partial_change = false, + .full_change = false, + .first_draw = true, + .moved = false, + .inline_tiles = true, + .in_group = true }; displayio_group_child_t splash_children[2] = { @@ -188,5 +196,5 @@ displayio_group_t circuitpython_splash = { .size = 2, .max_size = 2, .children = splash_children, - .needs_refresh = true + .item_removed = false }; |
