diff options
author | William Wilgus <wilgus.william@gmail.com> | 2020-10-31 00:18:57 -0400 |
---|---|---|
committer | William Wilgus <wilgus.william@gmail.com> | 2020-10-31 01:11:30 -0400 |
commit | 60f642ba4f6a9bf2d976f133b85b8f6a7502c14c (patch) | |
tree | a37547c0972899968a4a2ff148ded098d40f0f36 /firmware/export/lcd-remote.h | |
parent | 202f9df0c1e6132631e9e1372d50fe8dc8e87f20 (diff) | |
download | rockbox-60f642ba4f6a9bf2d976f133b85b8f6a7502c14c.tar.gz rockbox-60f642ba4f6a9bf2d976f133b85b8f6a7502c14c.zip |
lcd_framebuffer bugfixes, sanity checks
several issues I saw that could pontentially cause problems
scroll engine doesn't take text height into account when checking bounds
NBELEMS was one whole row too large hopefully I got them right this time
Change-Id: If303da8320429c3964fc675351cb088d46303745
Diffstat (limited to 'firmware/export/lcd-remote.h')
-rw-r--r-- | firmware/export/lcd-remote.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/firmware/export/lcd-remote.h b/firmware/export/lcd-remote.h index 030b01c736..93ca1fac7e 100644 --- a/firmware/export/lcd-remote.h +++ b/firmware/export/lcd-remote.h | |||
@@ -63,13 +63,13 @@ | |||
63 | #define LCD_REMOTE_STRIDE(w, h) (h) | 63 | #define LCD_REMOTE_STRIDE(w, h) (h) |
64 | #define LCD_REMOTE_FBSTRIDE(w, h) ((h+7)/8) | 64 | #define LCD_REMOTE_FBSTRIDE(w, h) ((h+7)/8) |
65 | #define LCD_REMOTE_FBHEIGHT LCD_REMOTE_FBSTRIDE(LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT) | 65 | #define LCD_REMOTE_FBHEIGHT LCD_REMOTE_FBSTRIDE(LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT) |
66 | #define LCD_REMOTE_NBELEMS(w, h) (((w*LCD_REMOTE_FBSTRIDE(w, h)) + h) / sizeof(fb_remote_data)) | 66 | #define LCD_REMOTE_NBELEMS(w, h) ((((w-1)*LCD_REMOTE_FBSTRIDE(w, h)) + h) / sizeof(fb_remote_data)) |
67 | #elif LCD_REMOTE_DEPTH == 2 | 67 | #elif LCD_REMOTE_DEPTH == 2 |
68 | #if LCD_REMOTE_PIXELFORMAT == VERTICAL_INTERLEAVED | 68 | #if LCD_REMOTE_PIXELFORMAT == VERTICAL_INTERLEAVED |
69 | #define LCD_REMOTE_STRIDE(w, h) (h) | 69 | #define LCD_REMOTE_STRIDE(w, h) (h) |
70 | #define LCD_REMOTE_FBSTRIDE(w, h) ((h+7)/8) | 70 | #define LCD_REMOTE_FBSTRIDE(w, h) ((h+7)/8) |
71 | #define LCD_REMOTE_FBHEIGHT LCD_REMOTE_FBSTRIDE(LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT) | 71 | #define LCD_REMOTE_FBHEIGHT LCD_REMOTE_FBSTRIDE(LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT) |
72 | #define LCD_REMOTE_NBELEMS(w, h) (((w*LCD_REMOTE_FBSTRIDE(w, h)) + h) / sizeof(fb_remote_data)) | 72 | #define LCD_REMOTE_NBELEMS(w, h) ((((w-1)*LCD_REMOTE_FBSTRIDE(w, h)) + h) / sizeof(fb_remote_data)) |
73 | #endif | 73 | #endif |
74 | #endif /* LCD_REMOTE_DEPTH */ | 74 | #endif /* LCD_REMOTE_DEPTH */ |
75 | 75 | ||
@@ -84,7 +84,7 @@ | |||
84 | 84 | ||
85 | #ifndef LCD_REMOTE_NBELEMS | 85 | #ifndef LCD_REMOTE_NBELEMS |
86 | /* At this time (2020) known remote screens only have vertical stride */ | 86 | /* At this time (2020) known remote screens only have vertical stride */ |
87 | #define LCD_REMOTE_NBELEMS(w, h) ((w*STRIDE_REMOTE(w, h)) + h) / sizeof(fb_remote_data)) | 87 | #define LCD_REMOTE_NBELEMS(w, h) (((w-1)*STRIDE_REMOTE(w, h)) + h) / sizeof(fb_remote_data)) |
88 | #define LCD_REMOTE_STRIDE(w, h) STRIDE_REMOTE(w, h) | 88 | #define LCD_REMOTE_STRIDE(w, h) STRIDE_REMOTE(w, h) |
89 | #define LCD_REMOTE_FBSTRIDE(w, h) STRIDE_REMOTE(w, h) | 89 | #define LCD_REMOTE_FBSTRIDE(w, h) STRIDE_REMOTE(w, h) |
90 | #endif | 90 | #endif |