summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2012-05-19 14:05:11 -0400
committerMichael Sevakis <jethead71@rockbox.org>2012-05-19 14:05:11 -0400
commitb1dcd298c7a5622944e628bf0da4bd04f5f59675 (patch)
tree5b83e79b3d69fb67301e6af6ea2457a9e8fe33f1
parent028c5e35eee43efc3c922ffc0db067fc61cf27cb (diff)
downloadrockbox-b1dcd298c7a5622944e628bf0da4bd04f5f59675.tar.gz
rockbox-b1dcd298c7a5622944e628bf0da4bd04f5f59675.zip
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
-rw-r--r--firmware/target/arm/as3525/lcd-ssd1303.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/firmware/target/arm/as3525/lcd-ssd1303.c b/firmware/target/arm/as3525/lcd-ssd1303.c
index 9fcc85d243..a36cf87d95 100644
--- a/firmware/target/arm/as3525/lcd-ssd1303.c
+++ b/firmware/target/arm/as3525/lcd-ssd1303.c
@@ -287,15 +287,21 @@ void lcd_update_rect(int x, int y, int width, int height)
287 return; 287 return;
288 288
289 /* The Y coordinates have to work on even 8 pixel rows */ 289 /* The Y coordinates have to work on even 8 pixel rows */
290 ymax = (y + height-1) >> 3; 290 if (x < 0)
291 y >>= 3; 291 height += x, x = 0;
292 292 if (x + width > LCD_WIDTH)
293 if(x + width > LCD_WIDTH)
294 width = LCD_WIDTH - x; 293 width = LCD_WIDTH - x;
295 if (width <= 0) 294 if (width <= 0)
296 return; /* nothing left to do, 0 is harmful to lcd_write_data() */ 295 return; /* nothing left to do, 0 is harmful to lcd_write_data() */
297 if(ymax >= LCD_FBHEIGHT) 296 if (y < 0)
298 ymax = LCD_FBHEIGHT-1; 297 height += y, y = 0;
298 if (y + height > LCD_HEIGHT)
299 height = LCD_HEIGHT - y;
300 if (height <= 0)
301 return; /* nothing left to do */
302
303 ymax = (y + height-1) >> 3;
304 y >>= 3;
299 305
300 /* Copy specified rectange bitmap to hardware */ 306 /* Copy specified rectange bitmap to hardware */
301 for (; y <= ymax; y++) 307 for (; y <= ymax; y++)