summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/lcd.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c
index e502c0c6b4..a228a6501b 100644
--- a/firmware/drivers/lcd.c
+++ b/firmware/drivers/lcd.c
@@ -644,10 +644,19 @@ void lcd_bitmap (unsigned char *src, int x, int y, int nx, int ny,
644 bool clear) 644 bool clear)
645{ 645{
646 unsigned char *dst; 646 unsigned char *dst;
647 unsigned char *dst2 = &display[x][y/8]; 647 unsigned char *dst2;
648 unsigned int data, mask, mask2, mask3, mask4; 648 unsigned int data, mask, mask2, mask3, mask4;
649 int shift = y & 7; 649 int shift;
650 650
651 if (((unsigned)x >= LCD_WIDTH) || ((unsigned)y >= LCD_HEIGHT))
652 return;
653 if (((unsigned)(x + nx)) >= LCD_WIDTH)
654 nx = LCD_WIDTH - x;
655 if (((unsigned)(y + ny)) >= LCD_HEIGHT)
656 ny = LCD_HEIGHT - y;
657
658 shift = y & 2;
659 dst2 = &display[x][y/8];
651 ny += shift; 660 ny += shift;
652 661
653 /* Calculate bit masks */ 662 /* Calculate bit masks */