mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 13:12:37 -05:00
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
This commit is contained in:
parent
60e5786b48
commit
cfeeb7889d
23 changed files with 78 additions and 40 deletions
|
|
@ -299,14 +299,15 @@ void lcd_update_rect(int x, int y, int width, int height)
|
|||
{
|
||||
fb_data* p;
|
||||
int h, w;
|
||||
|
||||
|
||||
void* (*fbaddr)(int x, int y) = FB_CURRENTVP_BUFFER->get_address_fn;
|
||||
if (lcd_type == 1) {
|
||||
/* TODO implement and test */
|
||||
lcd_set_window1(x, y, width, height);
|
||||
lcd_set_position1(x, y);
|
||||
|
||||
|
||||
for (h = 0; h < height; h++) {
|
||||
p = FBADDR(0,y);
|
||||
p = fbaddr(0,y);
|
||||
for (w = 0; w < LCD_WIDTH; w++) {
|
||||
while (LCD_STATUS & 0x10);
|
||||
LCD_WDATA = *p++;
|
||||
|
|
@ -317,9 +318,9 @@ void lcd_update_rect(int x, int y, int width, int height)
|
|||
else {
|
||||
lcd_set_window2(x, y, width, height);
|
||||
lcd_set_position2(x, y);
|
||||
|
||||
|
||||
for (h = 0; h < height; h++) {
|
||||
p = FBADDR(x,y);
|
||||
p = fbaddr(x,y);
|
||||
for (w = 0; w < width; w++) {
|
||||
while (LCD_STATUS & 0x10);
|
||||
LCD_WDATA = *p++;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue