From 9d14b73989b7703920c5f9542e46c07a90ed3e6a Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Sat, 4 Jun 2005 09:48:03 +0000 Subject: Bugfix: The peakmeter drew too much cpu power when recording, occasionally causing the recording buffer to wrap before the first save finished (when fsinfo didn't contain a next-free-cluster hint so that an exhaustive search was necessary). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6558 a1c6a512-1295-4272-9138-f99709370657 --- apps/recorder/peakmeter.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c index d24ba56..3ace818 100644 --- a/apps/recorder/peakmeter.c +++ b/apps/recorder/peakmeter.c @@ -1143,19 +1143,17 @@ int peak_meter_draw_get_btn(int x, int y, int width, int height) long next_refresh = current_tick; long next_big_refresh = current_tick + HZ / 10; button = BUTTON_NONE; + while (!TIME_AFTER(current_tick, next_big_refresh)) { button = button_get(false); if (button != BUTTON_NONE) { break; } + sleep(MAX(next_refresh - current_tick, 0) - 1); + next_refresh = current_tick + HZ / peak_meter_fps; peak_meter_peek(); - yield(); - - if (TIME_AFTER(current_tick, next_refresh)) { - peak_meter_draw(x, y, width, height); - lcd_update_rect(x, y, width, height); - next_refresh = current_tick + HZ / peak_meter_fps; - } + peak_meter_draw(x, y, width, height); + lcd_update_rect(x, y, width, height); } return button; } -- cgit v1.1