summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/gigabeat/meg-fx/lcd-meg-fx.c15
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)
95void lcd_enable(bool state) 96void 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