diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/gui/viewport.c | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c index ad9fad6846..a76de4bf4b 100644 --- a/apps/gui/viewport.c +++ b/apps/gui/viewport.c | |||
@@ -69,16 +69,10 @@ static int theme_stack_top[NB_SCREENS]; /* the last item added */ | |||
69 | static struct viewport_stack_item theme_stack[NB_SCREENS][VPSTACK_DEPTH]; | 69 | static struct viewport_stack_item theme_stack[NB_SCREENS][VPSTACK_DEPTH]; |
70 | static bool is_theme_enabled(enum screen_type screen); | 70 | static bool is_theme_enabled(enum screen_type screen); |
71 | 71 | ||
72 | static void toggle_theme(enum screen_type screen, bool force) | 72 | |
73 | static void toggle_events(bool enable) | ||
73 | { | 74 | { |
74 | bool enable_event = false; | 75 | if (enable) |
75 | static bool was_enabled[NB_SCREENS] = {false}; | ||
76 | int i; | ||
77 | FOR_NB_SCREENS(i) | ||
78 | { | ||
79 | enable_event = enable_event || is_theme_enabled(i); | ||
80 | } | ||
81 | if (enable_event) | ||
82 | { | 76 | { |
83 | add_event(GUI_EVENT_ACTIONUPDATE, false, viewportmanager_redraw); | 77 | add_event(GUI_EVENT_ACTIONUPDATE, false, viewportmanager_redraw); |
84 | #if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) | 78 | #if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) |
@@ -88,8 +82,34 @@ static void toggle_theme(enum screen_type screen, bool force) | |||
88 | do_sbs_update_callback); | 82 | do_sbs_update_callback); |
89 | add_event(PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE, false, | 83 | add_event(PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE, false, |
90 | do_sbs_update_callback); | 84 | do_sbs_update_callback); |
91 | 85 | } | |
92 | #if LCD_DEPTH > 1 | 86 | else |
87 | { | ||
88 | #if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) | ||
89 | remove_event(LCD_EVENT_ACTIVATION, do_sbs_update_callback); | ||
90 | #endif | ||
91 | remove_event(PLAYBACK_EVENT_TRACK_CHANGE, do_sbs_update_callback); | ||
92 | remove_event(PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE, do_sbs_update_callback); | ||
93 | remove_event(GUI_EVENT_ACTIONUPDATE, viewportmanager_redraw); | ||
94 | } | ||
95 | } | ||
96 | |||
97 | |||
98 | static void toggle_theme(enum screen_type screen, bool force) | ||
99 | { | ||
100 | bool enable_event = false; | ||
101 | static bool was_enabled[NB_SCREENS] = {false}; | ||
102 | int i; | ||
103 | |||
104 | FOR_NB_SCREENS(i) | ||
105 | { | ||
106 | enable_event = enable_event || is_theme_enabled(i); | ||
107 | } | ||
108 | toggle_events(enable_event); | ||
109 | |||
110 | if (is_theme_enabled(screen)) | ||
111 | { | ||
112 | #if LCD_DEPTH > 1 || LCD_REMOTE_DEPTH > 1 | ||
93 | screens[screen].backdrop_show(BACKDROP_MAIN); | 113 | screens[screen].backdrop_show(BACKDROP_MAIN); |
94 | #endif | 114 | #endif |
95 | /* remove the left overs from the previous screen. | 115 | /* remove the left overs from the previous screen. |
@@ -144,20 +164,10 @@ static void toggle_theme(enum screen_type screen, bool force) | |||
144 | } | 164 | } |
145 | else | 165 | else |
146 | { | 166 | { |
147 | FOR_NB_SCREENS(i) | 167 | #if LCD_DEPTH > 1 || LCD_REMOTE_DEPTH > 1 |
148 | { | 168 | screens[screen].backdrop_hide(); |
149 | #if LCD_DEPTH > 1 | ||
150 | screens[i].backdrop_hide(); | ||
151 | #endif | 169 | #endif |
152 | screens[i].stop_scroll(); | 170 | screens[screen].stop_scroll(); |
153 | } | ||
154 | |||
155 | #if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) | ||
156 | remove_event(LCD_EVENT_ACTIVATION, do_sbs_update_callback); | ||
157 | #endif | ||
158 | remove_event(PLAYBACK_EVENT_TRACK_CHANGE, do_sbs_update_callback); | ||
159 | remove_event(PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE, do_sbs_update_callback); | ||
160 | remove_event(GUI_EVENT_ACTIONUPDATE, viewportmanager_redraw); | ||
161 | } | 171 | } |
162 | /* let list initialize viewport in case viewport dimensions is changed. */ | 172 | /* let list initialize viewport in case viewport dimensions is changed. */ |
163 | send_event(GUI_EVENT_THEME_CHANGED, NULL); | 173 | send_event(GUI_EVENT_THEME_CHANGED, NULL); |