diff options
Diffstat (limited to 'firmware/screendump.c')
-rw-r--r-- | firmware/screendump.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/firmware/screendump.c b/firmware/screendump.c index 28c37610af..2916cc1c9f 100644 --- a/firmware/screendump.c +++ b/firmware/screendump.c | |||
@@ -118,6 +118,9 @@ void screen_dump(void) | |||
118 | #elif LCD_DEPTH <= 16 | 118 | #elif LCD_DEPTH <= 16 |
119 | unsigned short *dst, *dst_end; | 119 | unsigned short *dst, *dst_end; |
120 | unsigned short linebuf[DUMP_BMP_LINESIZE/2]; | 120 | unsigned short linebuf[DUMP_BMP_LINESIZE/2]; |
121 | #else /* 24bit */ | ||
122 | unsigned char *dst, *dst_end; | ||
123 | unsigned char linebuf[DUMP_BMP_LINESIZE * 3]; | ||
121 | #endif | 124 | #endif |
122 | 125 | ||
123 | #if CONFIG_RTC | 126 | #if CONFIG_RTC |
@@ -227,6 +230,17 @@ void screen_dump(void) | |||
227 | #endif | 230 | #endif |
228 | } | 231 | } |
229 | while (dst < dst_end); | 232 | while (dst < dst_end); |
233 | #elif LCD_DEPTH == 24 | ||
234 | dst_end = dst + LCD_WIDTH*3; | ||
235 | src = FBADDR(0, y); | ||
236 | do | ||
237 | { | ||
238 | *dst++ = src->b; | ||
239 | *dst++ = src->g; | ||
240 | *dst++ = src->r; | ||
241 | ++src; | ||
242 | } | ||
243 | while (dst < dst_end); | ||
230 | 244 | ||
231 | #endif /* LCD_DEPTH */ | 245 | #endif /* LCD_DEPTH */ |
232 | write(fd, linebuf, DUMP_BMP_LINESIZE); | 246 | write(fd, linebuf, DUMP_BMP_LINESIZE); |