summaryrefslogtreecommitdiff
path: root/firmware/screendump.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/screendump.c')
-rw-r--r--firmware/screendump.c14
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);