summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-08-20 06:36:24 +0000
committerJens Arnold <amiconn@rockbox.org>2007-08-20 06:36:24 +0000
commit99ff02d2cb9adb207e94d67fcddee7aaedde2435 (patch)
treeef22247bcfb57f018225603be4362717165ca45d
parentc023cb8783ba3f9d1ea7da3f09c281aedbc9de4a (diff)
downloadrockbox-99ff02d2cb9adb207e94d67fcddee7aaedde2435.zip
rockbox-99ff02d2cb9adb207e94d67fcddee7aaedde2435.tar.gz
rockbox-99ff02d2cb9adb207e94d67fcddee7aaedde2435.tar.bz2
rockbox-99ff02d2cb9adb207e94d67fcddee7aaedde2435.tar.xz
Make peak release work per tick as intended. But that's too fast, so it's not the final solution.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14397 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/recorder/peakmeter.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c
index 097c98f..7d97bd3 100644
--- a/apps/recorder/peakmeter.c
+++ b/apps/recorder/peakmeter.c
@@ -879,7 +879,7 @@ void peak_meter_draw(struct screen *display, struct meter_scales *scales,
static int left_level = 0, right_level = 0;
int left = 0, right = 0;
int meterwidth = width - 3;
- int i;
+ int i, delta;
static long peak_release_tick = 0;
#ifdef PM_DEBUG
@@ -935,17 +935,11 @@ void peak_meter_draw(struct screen *display, struct meter_scales *scales,
}
/* apply release */
- if(current_tick != peak_release_tick)
- {
- peak_release_tick = current_tick;
- left = MAX(left , scales->last_left - pm_peak_release);
- right = MAX(right, scales->last_right - pm_peak_release);
- }
- else
- {
- left = MAX(left , scales->last_left);
- right = MAX(right, scales->last_right);
- }
+ delta = current_tick - peak_release_tick;
+ peak_release_tick = current_tick;
+ left = MAX(left , scales->last_left - delta * pm_peak_release);
+ right = MAX(right, scales->last_right - delta * pm_peak_release);
+
/* reset max values after timeout */
if (TIME_AFTER(current_tick, scales->pm_peak_timeout_l)){
scales->pm_peak_left = 0;