diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/lcd-bitmap-common.c | 12 | ||||
-rw-r--r-- | firmware/export/lcd.h | 5 |
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 | ||
179 | void LCDFN(update_viewport)(void) | 179 | void 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) | |||
196 | void LCDFN(update_viewport_rect)(int x, int y, int width, int height) | 202 | void 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 | ||
185 | struct viewport { | 186 | struct viewport { |