diff options
author | Greg White <gwhite@rockbox.org> | 2007-01-08 02:31:12 +0000 |
---|---|---|
committer | Greg White <gwhite@rockbox.org> | 2007-01-08 02:31:12 +0000 |
commit | 5693622cd4de1d3dff162295690ecb25d29a2937 (patch) | |
tree | 2a77c55832c9e317ec97c1786bdab75520c44b52 /firmware/target/arm/gigabeat/meg-fx | |
parent | 8cce37f161d3202be977a363a3d94d7013cf7da8 (diff) | |
download | rockbox-5693622cd4de1d3dff162295690ecb25d29a2937.tar.gz rockbox-5693622cd4de1d3dff162295690ecb25d29a2937.zip |
Make lcd_enable more tolerant of multiple calls
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11943 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/gigabeat/meg-fx')
-rw-r--r-- | firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c b/firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c index 754ee6dec4..965f4523c8 100644 --- a/firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c +++ b/firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c | |||
@@ -52,7 +52,8 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
52 | 52 | ||
53 | if(!lcd_on) | 53 | if(!lcd_on) |
54 | { | 54 | { |
55 | yield(); | 55 | for(x=0; x < 2; x++) |
56 | yield(); | ||
56 | return; | 57 | return; |
57 | } | 58 | } |
58 | if (use_dma_blit) | 59 | if (use_dma_blit) |
@@ -95,15 +96,14 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
95 | void lcd_enable(bool state) | 96 | void lcd_enable(bool state) |
96 | { | 97 | { |
97 | if(state) { | 98 | if(state) { |
98 | if(lcd_poweroff) { | 99 | if(lcd_poweroff && !lcd_on) { |
99 | if(!lcd_on) | 100 | memcpy(FRAME, lcd_framebuffer, LCD_WIDTH*LCD_HEIGHT*2); |
100 | memcpy(FRAME, lcd_framebuffer, LCD_WIDTH*LCD_HEIGHT*2); | ||
101 | lcd_on = true; | 101 | lcd_on = true; |
102 | LCDCON1 |= 1; | 102 | LCDCON1 |= 1; |
103 | } | 103 | } |
104 | } | 104 | } |
105 | else { | 105 | else { |
106 | if(lcd_poweroff) { | 106 | if(lcd_poweroff && lcd_on) { |
107 | lcd_on = false; | 107 | lcd_on = false; |
108 | LCDCON1 &= ~1; | 108 | LCDCON1 &= ~1; |
109 | } | 109 | } |
@@ -135,6 +135,11 @@ void lcd_clear_display_dma(void) | |||
135 | void *src; | 135 | void *src; |
136 | bool inc = false; | 136 | bool inc = false; |
137 | 137 | ||
138 | if(!lcd_on) { | ||
139 | yield(); | ||
140 | yield(); | ||
141 | } | ||
142 | |||
138 | if (lcd_get_drawmode() & DRMODE_INVERSEVID) | 143 | if (lcd_get_drawmode() & DRMODE_INVERSEVID) |
139 | src = fg_pattern_blit; | 144 | src = fg_pattern_blit; |
140 | else | 145 | else |