From d56d96031c42a68fa38e7b12bf028ee6d2eb3ef3 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Fri, 15 Apr 2022 01:54:42 -0400 Subject: viewports add flag to disable updates when drwing multiple areas of the screen with other gui elements you might want to combine updates into a single screen redraw Change-Id: Ie4130366fa13e25d3d14e937257d11547dd61134 --- firmware/drivers/lcd-bitmap-common.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'firmware/drivers/lcd-bitmap-common.c') diff --git a/firmware/drivers/lcd-bitmap-common.c b/firmware/drivers/lcd-bitmap-common.c index 48710df49b..4fe095096f 100644 --- a/firmware/drivers/lcd-bitmap-common.c +++ b/firmware/drivers/lcd-bitmap-common.c @@ -178,7 +178,13 @@ struct viewport *LCDFN(get_viewport)(bool *is_default) void LCDFN(update_viewport)(void) { + struct viewport* vp = LCDFN(current_viewport); + if ((vp->flags & VP_FLAG_OWNER_UPDATE) == VP_FLAG_OWNER_UPDATE) + { + logf("%s ignored - owner update", __func__); + return; + } int x, y; if (vp->buffer->stride != LCDFN(framebuffer_default.stride)) { @@ -196,7 +202,11 @@ void LCDFN(update_viewport)(void) void LCDFN(update_viewport_rect)(int x, int y, int width, int height) { struct viewport* vp = LCDFN(current_viewport); - + if ((vp->flags & VP_FLAG_OWNER_UPDATE) == VP_FLAG_OWNER_UPDATE) + { + logf("%s ignored - owner update", __func__); + return; + } /* handle the case of viewport with differing stride from main screen */ if (vp->buffer->stride != LCDFN(framebuffer_default.stride)) { -- cgit v1.2.3