diff options
Diffstat (limited to 'apps/recorder/peakmeter.c')
-rw-r--r-- | apps/recorder/peakmeter.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c index f06b19ab2d..097c98f29d 100644 --- a/apps/recorder/peakmeter.c +++ b/apps/recorder/peakmeter.c | |||
@@ -880,6 +880,7 @@ void peak_meter_draw(struct screen *display, struct meter_scales *scales, | |||
880 | int left = 0, right = 0; | 880 | int left = 0, right = 0; |
881 | int meterwidth = width - 3; | 881 | int meterwidth = width - 3; |
882 | int i; | 882 | int i; |
883 | static long peak_release_tick = 0; | ||
883 | 884 | ||
884 | #ifdef PM_DEBUG | 885 | #ifdef PM_DEBUG |
885 | static long pm_tick = 0; | 886 | static long pm_tick = 0; |
@@ -934,9 +935,17 @@ void peak_meter_draw(struct screen *display, struct meter_scales *scales, | |||
934 | } | 935 | } |
935 | 936 | ||
936 | /* apply release */ | 937 | /* apply release */ |
937 | left = MAX(left , scales->last_left - pm_peak_release); | 938 | if(current_tick != peak_release_tick) |
938 | right = MAX(right, scales->last_right - pm_peak_release); | 939 | { |
939 | 940 | peak_release_tick = current_tick; | |
941 | left = MAX(left , scales->last_left - pm_peak_release); | ||
942 | right = MAX(right, scales->last_right - pm_peak_release); | ||
943 | } | ||
944 | else | ||
945 | { | ||
946 | left = MAX(left , scales->last_left); | ||
947 | right = MAX(right, scales->last_right); | ||
948 | } | ||
940 | /* reset max values after timeout */ | 949 | /* reset max values after timeout */ |
941 | if (TIME_AFTER(current_tick, scales->pm_peak_timeout_l)){ | 950 | if (TIME_AFTER(current_tick, scales->pm_peak_timeout_l)){ |
942 | scales->pm_peak_left = 0; | 951 | scales->pm_peak_left = 0; |