mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 12:45:26 -05:00
ssd1303: make sure sansa clip and whatever others clip updates properly.
Sometimes I do want to update outside the screen boundaries and it was messing it up; such things should not cause display problems. Change-Id: Ic9deec609b19e5a1c603601b20c66599dd44f892
This commit is contained in:
parent
028c5e35ee
commit
b1dcd298c7
1 changed files with 12 additions and 6 deletions
|
|
@ -287,15 +287,21 @@ void lcd_update_rect(int x, int y, int width, int height)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* The Y coordinates have to work on even 8 pixel rows */
|
/* The Y coordinates have to work on even 8 pixel rows */
|
||||||
ymax = (y + height-1) >> 3;
|
if (x < 0)
|
||||||
y >>= 3;
|
height += x, x = 0;
|
||||||
|
if (x + width > LCD_WIDTH)
|
||||||
if(x + width > LCD_WIDTH)
|
|
||||||
width = LCD_WIDTH - x;
|
width = LCD_WIDTH - x;
|
||||||
if (width <= 0)
|
if (width <= 0)
|
||||||
return; /* nothing left to do, 0 is harmful to lcd_write_data() */
|
return; /* nothing left to do, 0 is harmful to lcd_write_data() */
|
||||||
if(ymax >= LCD_FBHEIGHT)
|
if (y < 0)
|
||||||
ymax = LCD_FBHEIGHT-1;
|
height += y, y = 0;
|
||||||
|
if (y + height > LCD_HEIGHT)
|
||||||
|
height = LCD_HEIGHT - y;
|
||||||
|
if (height <= 0)
|
||||||
|
return; /* nothing left to do */
|
||||||
|
|
||||||
|
ymax = (y + height-1) >> 3;
|
||||||
|
y >>= 3;
|
||||||
|
|
||||||
/* Copy specified rectange bitmap to hardware */
|
/* Copy specified rectange bitmap to hardware */
|
||||||
for (; y <= ymax; y++)
|
for (; y <= ymax; y++)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue