summaryrefslogtreecommitdiff
path: root/supervisor
diff options
context:
space:
mode:
authorDan Halbert <halbert@adafruit.com>2019-06-13 08:29:12 -0400
committerGitHub <noreply@github.com>2019-06-13 08:29:12 -0400
commit6be7cf7440acb827d4b0f767b6083a859499b045 (patch)
tree55834cab63123bb95a2b7d329ff78442f34cfe6b /supervisor
parenta06a97e2cba36233d229ba44c3acd9007affe1c9 (diff)
parent6f6dcafd906b2ac49291f4220f3fcc7cea6112e1 (diff)
Merge pull request #1940 from tannewt/dirty_area
Add partial display update support.
Diffstat (limited to 'supervisor')
-rw-r--r--supervisor/shared/display.c32
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
};