summaryrefslogtreecommitdiff
path: root/firmware/target/coldfire/iriver/h100/lcd-h100.c
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2022-03-21 18:54:52 -0400
committerWilliam Wilgus <wilgus.william@gmail.com>2022-03-21 23:53:48 -0400
commitcfeeb7889d5346e2abaf9b198375df62c58b098f (patch)
treef9956033372abe7d8bffa4e04bef0662dfb0da02 /firmware/target/coldfire/iriver/h100/lcd-h100.c
parent60e5786b481a26ca7c0c810d812bf5664a58cb44 (diff)
downloadrockbox-cfeeb7889d5346e2abaf9b198375df62c58b098f.tar.gz
rockbox-cfeeb7889d5346e2abaf9b198375df62c58b098f.zip
Lcd save function pointer to frame buffer get_address_fn before loops
Calling multiple levels of indirection in a loop slows things down Really these need to be rewritten to take a start and end address like most of the rest of the codebase But this is safer without having test hardware in hand Change-Id: Idae7b92ee779d020ed7fcc9334e2d5a9c710e64d
Diffstat (limited to 'firmware/target/coldfire/iriver/h100/lcd-h100.c')
-rw-r--r--firmware/target/coldfire/iriver/h100/lcd-h100.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/firmware/target/coldfire/iriver/h100/lcd-h100.c b/firmware/target/coldfire/iriver/h100/lcd-h100.c
index b13751b9eb..b6eea1dfa3 100644
--- a/firmware/target/coldfire/iriver/h100/lcd-h100.c
+++ b/firmware/target/coldfire/iriver/h100/lcd-h100.c
@@ -209,6 +209,7 @@ void lcd_update(void)
209{ 209{
210 int y; 210 int y;
211 211
212 void* (*fbaddr)(int x, int y) = FB_CURRENTVP_BUFFER->get_address_fn;
212 /* Copy display bitmap to hardware */ 213 /* Copy display bitmap to hardware */
213 for (y = 0; y < LCD_FBHEIGHT; y++) 214 for (y = 0; y < LCD_FBHEIGHT; y++)
214 { 215 {
@@ -216,7 +217,7 @@ void lcd_update(void)
216 lcd_write_command_ex(LCD_CNTL_COLUMN, 0, -1); 217 lcd_write_command_ex(LCD_CNTL_COLUMN, 0, -1);
217 218
218 lcd_write_command(LCD_CNTL_DATA_WRITE); 219 lcd_write_command(LCD_CNTL_DATA_WRITE);
219 lcd_write_data (FBADDR(0, y), LCD_WIDTH); 220 lcd_write_data (fbaddr(0,y), LCD_WIDTH);
220 } 221 }
221} 222}
222 223
@@ -237,6 +238,7 @@ void lcd_update_rect(int x, int y, int width, int height)
237 if(ymax >= LCD_FBHEIGHT) 238 if(ymax >= LCD_FBHEIGHT)
238 ymax = LCD_FBHEIGHT-1; 239 ymax = LCD_FBHEIGHT-1;
239 240
241 void* (*fbaddr)(int x, int y) = FB_CURRENTVP_BUFFER->get_address_fn;
240 /* Copy specified rectange bitmap to hardware */ 242 /* Copy specified rectange bitmap to hardware */
241 for (; y <= ymax; y++) 243 for (; y <= ymax; y++)
242 { 244 {
@@ -244,6 +246,6 @@ void lcd_update_rect(int x, int y, int width, int height)
244 lcd_write_command_ex(LCD_CNTL_COLUMN, x, -1); 246 lcd_write_command_ex(LCD_CNTL_COLUMN, x, -1);
245 247
246 lcd_write_command(LCD_CNTL_DATA_WRITE); 248 lcd_write_command(LCD_CNTL_DATA_WRITE);
247 lcd_write_data (FBADDR(x,y), width); 249 lcd_write_data (fbaddr(x,y), width);
248 } 250 }
249} 251}