summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/lcd-bitmap-common.c12
-rw-r--r--firmware/export/lcd.h5
2 files changed, 14 insertions, 3 deletions
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)
178 178
179void LCDFN(update_viewport)(void) 179void LCDFN(update_viewport)(void)
180{ 180{
181
181 struct viewport* vp = LCDFN(current_viewport); 182 struct viewport* vp = LCDFN(current_viewport);
183 if ((vp->flags & VP_FLAG_OWNER_UPDATE) == VP_FLAG_OWNER_UPDATE)
184 {
185 logf("%s ignored - owner update", __func__);
186 return;
187 }
182 int x, y; 188 int x, y;
183 if (vp->buffer->stride != LCDFN(framebuffer_default.stride)) 189 if (vp->buffer->stride != LCDFN(framebuffer_default.stride))
184 { 190 {
@@ -196,7 +202,11 @@ void LCDFN(update_viewport)(void)
196void LCDFN(update_viewport_rect)(int x, int y, int width, int height) 202void LCDFN(update_viewport_rect)(int x, int y, int width, int height)
197{ 203{
198 struct viewport* vp = LCDFN(current_viewport); 204 struct viewport* vp = LCDFN(current_viewport);
199 205 if ((vp->flags & VP_FLAG_OWNER_UPDATE) == VP_FLAG_OWNER_UPDATE)
206 {
207 logf("%s ignored - owner update", __func__);
208 return;
209 }
200 /* handle the case of viewport with differing stride from main screen */ 210 /* handle the case of viewport with differing stride from main screen */
201 if (vp->buffer->stride != LCDFN(framebuffer_default.stride)) 211 if (vp->buffer->stride != LCDFN(framebuffer_default.stride))
202 { 212 {
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h
index 13165129b1..2f8fd3e751 100644
--- a/firmware/export/lcd.h
+++ b/firmware/export/lcd.h
@@ -178,8 +178,9 @@ struct frame_buffer_t {
178 178
179#define VP_IS_RTL(vp) (((vp)->flags & VP_FLAG_ALIGNMENT_MASK) == VP_FLAG_ALIGN_RIGHT) 179#define VP_IS_RTL(vp) (((vp)->flags & VP_FLAG_ALIGNMENT_MASK) == VP_FLAG_ALIGN_RIGHT)
180 180
181#define VP_FLAG_VP_DIRTY 0x4000 181#define VP_FLAG_OWNER_UPDATE 0x2000 /* block update_vp functions */
182#define VP_FLAG_CLEAR_FLAG 0x8000 182#define VP_FLAG_VP_DIRTY 0x4000
183#define VP_FLAG_CLEAR_FLAG 0x8000
183#define VP_FLAG_VP_SET_CLEAN (VP_FLAG_CLEAR_FLAG | VP_FLAG_VP_DIRTY) 184#define VP_FLAG_VP_SET_CLEAN (VP_FLAG_CLEAR_FLAG | VP_FLAG_VP_DIRTY)
184 185
185struct viewport { 186struct viewport {