Skip to content

Commit 0da6241

Browse files
authored
Merge pull request #8050 from FoamyGuy/hidden_refresh_areas
don't consider refresh areas for hidden groups or tilegrids
2 parents 28b0e34 + 4bf4d14 commit 0da6241

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

shared-module/displayio/Group.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,9 @@ displayio_area_t *displayio_group_get_refresh_areas(displayio_group_t *self, dis
456456
layer = mp_obj_cast_to_native_base(
457457
self->members->items[i], &displayio_tilegrid_type);
458458
if (layer != MP_OBJ_NULL) {
459-
tail = displayio_tilegrid_get_refresh_areas(layer, tail);
459+
if (!displayio_tilegrid_get_rendered_hidden(layer)) {
460+
tail = displayio_tilegrid_get_refresh_areas(layer, tail);
461+
}
460462
continue;
461463
}
462464
layer = mp_obj_cast_to_native_base(

shared-module/displayio/TileGrid.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,21 @@ bool common_hal_displayio_tilegrid_get_hidden(displayio_tilegrid_t *self) {
8282
return self->hidden;
8383
}
8484

85+
bool displayio_tilegrid_get_rendered_hidden(displayio_tilegrid_t *self) {
86+
return self->rendered_hidden;
87+
}
88+
8589
void common_hal_displayio_tilegrid_set_hidden(displayio_tilegrid_t *self, bool hidden) {
8690
self->hidden = hidden;
91+
self->rendered_hidden = false;
8792
if (!hidden) {
8893
self->full_change = true;
8994
}
9095
}
9196

9297
void displayio_tilegrid_set_hidden_by_parent(displayio_tilegrid_t *self, bool hidden) {
9398
self->hidden_by_parent = hidden;
99+
self->rendered_hidden = false;
94100
if (!hidden) {
95101
self->full_change = true;
96102
}
@@ -582,6 +588,7 @@ displayio_area_t *displayio_tilegrid_get_refresh_areas(displayio_tilegrid_t *sel
582588
bool hidden = self->hidden || self->hidden_by_parent;
583589
// Check hidden first because it trumps all other changes.
584590
if (hidden) {
591+
self->rendered_hidden = true;
585592
if (!first_draw) {
586593
self->previous_area.next = tail;
587594
return &self->previous_area;

shared-module/displayio/TileGrid.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ typedef struct {
6666
bool transpose_xy : 1;
6767
bool hidden : 1;
6868
bool hidden_by_parent : 1;
69+
bool rendered_hidden : 1;
6970
uint8_t padding : 6;
7071
} displayio_tilegrid_t;
7172

@@ -86,4 +87,6 @@ void displayio_tilegrid_update_transform(displayio_tilegrid_t *group, const disp
8687
bool displayio_tilegrid_get_previous_area(displayio_tilegrid_t *self, displayio_area_t *area);
8788
void displayio_tilegrid_finish_refresh(displayio_tilegrid_t *self);
8889

90+
bool displayio_tilegrid_get_rendered_hidden(displayio_tilegrid_t *self);
91+
8992
#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_TILEGRID_H

0 commit comments

Comments
 (0)