Ver Fonte

Suspend power off, fix backlight animation

The backlight color animation was using the wrong frame number, so
it didn't work properly.
Fred Sundvik há 10 anos atrás
pai
commit
f4c11740f7
1 ficheiros alterados com 12 adições e 2 exclusões
  1. 12 2
      visualizer.c

+ 12 - 2
visualizer.c

@@ -174,7 +174,7 @@ bool keyframe_no_operation(keyframe_animation_t* animation, visualizer_state_t*
 
 
 #ifdef LCD_BACKLIGHT_ENABLE
 #ifdef LCD_BACKLIGHT_ENABLE
 bool keyframe_animate_backlight_color(keyframe_animation_t* animation, visualizer_state_t* state) {
 bool keyframe_animate_backlight_color(keyframe_animation_t* animation, visualizer_state_t* state) {
-    int frame_length = animation->frame_lengths[1];
+    int frame_length = animation->frame_lengths[animation->current_frame];
     int current_pos = frame_length - animation->time_left_in_frame;
     int current_pos = frame_length - animation->time_left_in_frame;
     uint8_t t_h = LCD_HUE(state->target_lcd_color);
     uint8_t t_h = LCD_HUE(state->target_lcd_color);
     uint8_t t_s = LCD_SAT(state->target_lcd_color);
     uint8_t t_s = LCD_SAT(state->target_lcd_color);
@@ -270,12 +270,21 @@ bool keyframe_display_layer_bitmap(keyframe_animation_t* animation, visualizer_s
 bool keyframe_disable_lcd_and_backlight(keyframe_animation_t* animation, visualizer_state_t* state) {
 bool keyframe_disable_lcd_and_backlight(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)animation;
     (void)animation;
     (void)state;
     (void)state;
+#ifdef LCD_ENABLE
+    gdispSetPowerMode(powerOff);
+#endif
+#ifdef LCD_BACKLIGHT_ENABLE
+    lcd_backlight_hal_color(0, 0, 0);
+#endif
     return false;
     return false;
 }
 }
 
 
 bool keyframe_enable_lcd_and_backlight(keyframe_animation_t* animation, visualizer_state_t* state) {
 bool keyframe_enable_lcd_and_backlight(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)animation;
     (void)animation;
     (void)state;
     (void)state;
+#ifdef LCD_ENABLE
+    gdispSetPowerMode(powerOn);
+#endif
     return false;
     return false;
 }
 }
 
 
@@ -339,8 +348,8 @@ static THD_FUNCTION(visualizerThread, arg) {
                 else {
                 else {
                     state.status = current_status;
                     state.status = current_status;
                     update_user_visualizer_state(&state);
                     update_user_visualizer_state(&state);
-                    state.prev_lcd_color = state.current_lcd_color;
                 }
                 }
+                state.prev_lcd_color = state.current_lcd_color;
             }
             }
         }
         }
         if (!enabled && state.status.suspended && current_status.suspended == false) {
         if (!enabled && state.status.suspended && current_status.suspended == false) {
@@ -350,6 +359,7 @@ static THD_FUNCTION(visualizerThread, arg) {
             state.status.suspended = false;
             state.status.suspended = false;
             stop_all_keyframe_animations();
             stop_all_keyframe_animations();
             user_visualizer_resume(&state);
             user_visualizer_resume(&state);
+            state.prev_lcd_color = state.current_lcd_color;
         }
         }
         sleep_time = TIME_INFINITE;
         sleep_time = TIME_INFINITE;
         for (int i=0;i<MAX_SIMULTANEOUS_ANIMATIONS;i++) {
         for (int i=0;i<MAX_SIMULTANEOUS_ANIMATIONS;i++) {