summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/skin_engine/skin_display.c59
-rw-r--r--apps/recorder/peakmeter.c6
-rw-r--r--apps/recorder/peakmeter.h2
-rw-r--r--apps/recorder/radio.c2
-rw-r--r--apps/recorder/recording.c6
5 files changed, 35 insertions, 40 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c
index 9316294aad..9b42a7c18b 100644
--- a/apps/gui/skin_engine/skin_display.c
+++ b/apps/gui/skin_engine/skin_display.c
@@ -630,6 +630,10 @@ static bool evaluate_conditional(struct gui_wps *gwps, int *token_index)
630 struct progressbar *bar = (struct progressbar*)data->tokens[i].value.data; 630 struct progressbar *bar = (struct progressbar*)data->tokens[i].value.data;
631 bar->draw = false; 631 bar->draw = false;
632 } 632 }
633 else if (data->tokens[i].type == WPS_TOKEN_PEAKMETER)
634 {
635 data->peak_meter_enabled = false;
636 }
633#endif 637#endif
634#ifdef HAVE_ALBUMART 638#ifdef HAVE_ALBUMART
635 if (data->albumart && data->tokens[i].type == WPS_TOKEN_ALBUMART_DISPLAY) 639 if (data->albumart && data->tokens[i].type == WPS_TOKEN_ALBUMART_DISPLAY)
@@ -692,6 +696,9 @@ static bool get_line(struct gui_wps *gwps,
692 break; 696 break;
693 697
694#ifdef HAVE_LCD_BITMAP 698#ifdef HAVE_LCD_BITMAP
699 case WPS_TOKEN_PEAKMETER:
700 data->peak_meter_enabled = true;
701 break;
695 case WPS_TOKEN_VOLUMEBAR: 702 case WPS_TOKEN_VOLUMEBAR:
696 case WPS_TOKEN_BATTERY_PERCENTBAR: 703 case WPS_TOKEN_BATTERY_PERCENTBAR:
697 case WPS_TOKEN_PROGRESSBAR: 704 case WPS_TOKEN_PROGRESSBAR:
@@ -1083,19 +1090,6 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode)
1083 1090
1084 bool update_line, new_subline_refresh; 1091 bool update_line, new_subline_refresh;
1085 1092
1086#ifdef HAVE_LCD_BITMAP
1087
1088 /* to find out wether the peak meter is enabled we
1089 assume it wasn't until we find a line that contains
1090 the peak meter. We can't use peak_meter_enabled itself
1091 because that would mean to turn off the meter thread
1092 temporarily. (That shouldn't matter unless yield
1093 or sleep is called but who knows...)
1094 */
1095 bool enable_pm = false;
1096
1097#endif
1098
1099 /* reset to first subline if refresh all flag is set */ 1093 /* reset to first subline if refresh all flag is set */
1100 if (refresh_mode == WPS_REFRESH_ALL) 1094 if (refresh_mode == WPS_REFRESH_ALL)
1101 { 1095 {
@@ -1226,27 +1220,27 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode)
1226 /* peakmeter */ 1220 /* peakmeter */
1227 if (flags & vp_refresh_mode & WPS_REFRESH_PEAK_METER) 1221 if (flags & vp_refresh_mode & WPS_REFRESH_PEAK_METER)
1228 { 1222 {
1229 /* the peakmeter should be alone on its line */ 1223 if (!data->peak_meter_enabled)
1230 update_line = false; 1224 {
1231 1225 peak_meter_enable(false);
1232 int h = font_get(skin_viewport->vp.font)->height;
1233 int peak_meter_y = line_count* h;
1234
1235 /* The user might decide to have the peak meter in the last
1236 line so that it is only displayed if no status bar is
1237 visible. If so we neither want do draw nor enable the
1238 peak meter. */
1239 if (peak_meter_y + h <= skin_viewport->vp.y+skin_viewport->vp.height) {
1240 /* found a line with a peak meter -> remember that we must
1241 enable it later */
1242 enable_pm = true;
1243 peak_meter_enabled = true;
1244 peak_meter_screen(gwps->display, 0, peak_meter_y,
1245 MIN(h, skin_viewport->vp.y+skin_viewport->vp.height - peak_meter_y));
1246 } 1226 }
1247 else 1227 else
1248 { 1228 {
1249 peak_meter_enabled = false; 1229 /* the peakmeter should be alone on its line */
1230 update_line = false;
1231
1232 int h = font_get(skin_viewport->vp.font)->height;
1233 int peak_meter_y = line_count* h;
1234
1235 /* The user might decide to have the peak meter in the last
1236 line so that it is only displayed if no status bar is
1237 visible. If so we neither want do draw nor enable the
1238 peak meter. */
1239 if (peak_meter_y + h <= skin_viewport->vp.y+skin_viewport->vp.height) {
1240 peak_meter_enable(true);
1241 peak_meter_screen(gwps->display, 0, peak_meter_y,
1242 MIN(h, skin_viewport->vp.y+skin_viewport->vp.height - peak_meter_y));
1243 }
1250 } 1244 }
1251 } 1245 }
1252 1246
@@ -1302,9 +1296,6 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode)
1302#endif 1296#endif
1303 } 1297 }
1304 1298
1305#ifdef HAVE_LCD_BITMAP
1306 data->peak_meter_enabled = enable_pm;
1307#endif
1308 /* Restore the default viewport */ 1299 /* Restore the default viewport */
1309 display->set_viewport(NULL); 1300 display->set_viewport(NULL);
1310 1301
diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c
index 154f605898..164b14b15c 100644
--- a/apps/recorder/peakmeter.c
+++ b/apps/recorder/peakmeter.c
@@ -78,7 +78,11 @@ static long pm_clip_timeout_r;
78 78
79/* Temporarily en- / disables peak meter. This is especially for external 79/* Temporarily en- / disables peak meter. This is especially for external
80 applications to detect if the peak_meter is in use and needs drawing at all */ 80 applications to detect if the peak_meter is in use and needs drawing at all */
81bool peak_meter_enabled = true; 81static bool peak_meter_enabled = true;
82void peak_meter_enable(bool enable)
83{
84 peak_meter_enabled = enable;
85}
82 86
83/** Parameters **/ 87/** Parameters **/
84/* Range */ 88/* Range */
diff --git a/apps/recorder/peakmeter.h b/apps/recorder/peakmeter.h
index 6fc2d6be58..308e5fb916 100644
--- a/apps/recorder/peakmeter.h
+++ b/apps/recorder/peakmeter.h
@@ -32,7 +32,7 @@ extern int pm_get_clipcount(void);
32extern void pm_reset_clipcount(void); 32extern void pm_reset_clipcount(void);
33extern void pm_activate_clipcount(bool active); 33extern void pm_activate_clipcount(bool active);
34 34
35extern bool peak_meter_enabled; 35extern void peak_meter_enable(bool enable);
36 36
37extern void peak_meter_playback(bool playback); 37extern void peak_meter_playback(bool playback);
38extern int peak_meter_draw_get_btn(int action_context, int x[], int y[], 38extern int peak_meter_draw_get_btn(int action_context, int x[], int y[],
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index 7761f248ca..5841664742 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -548,7 +548,7 @@ int radio_screen(void)
548 /* Yes, we use the D/A for monitoring */ 548 /* Yes, we use the D/A for monitoring */
549 peak_meter_playback(true); 549 peak_meter_playback(true);
550 550
551 peak_meter_enabled = true; 551 peak_meter_enable(true);
552 552
553 rec_init_recording_options(&rec_options); 553 rec_init_recording_options(&rec_options);
554 rec_options.rec_source = AUDIO_SRC_LINEIN; 554 rec_options.rec_source = AUDIO_SRC_LINEIN;
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index d5ac91000c..21db298184 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -698,7 +698,7 @@ void rec_set_source(int source, unsigned flags)
698 698
699 /* Set peakmeters for recording or reset to playback */ 699 /* Set peakmeters for recording or reset to playback */
700 peak_meter_playback((flags & SRCF_RECORDING) == 0); 700 peak_meter_playback((flags & SRCF_RECORDING) == 0);
701 peak_meter_enabled = true; 701 peak_meter_enable(true);
702} 702}
703#endif /* CONFIG_CODEC == SWCODEC && !defined (SIMULATOR) */ 703#endif /* CONFIG_CODEC == SWCODEC && !defined (SIMULATOR) */
704 704
@@ -1099,7 +1099,7 @@ bool recording_screen(bool no_source)
1099 buffer */ 1099 buffer */
1100#else 1100#else
1101 /* Yes, we use the D/A for monitoring */ 1101 /* Yes, we use the D/A for monitoring */
1102 peak_meter_enabled = true; 1102 peak_meter_enable(true);
1103 peak_meter_playback(true); 1103 peak_meter_playback(true);
1104#endif 1104#endif
1105 1105
@@ -1549,7 +1549,7 @@ bool recording_screen(bool no_source)
1549 { 1549 {
1550#if CONFIG_CODEC != SWCODEC 1550#if CONFIG_CODEC != SWCODEC
1551 peak_meter_playback(true); 1551 peak_meter_playback(true);
1552 peak_meter_enabled = false; 1552 peak_meter_enable(false);
1553#endif 1553#endif
1554 done = 1; 1554 done = 1;
1555 } 1555 }