summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2005-06-04 09:48:03 +0000
committerJens Arnold <amiconn@rockbox.org>2005-06-04 09:48:03 +0000
commit9d14b73989b7703920c5f9542e46c07a90ed3e6a (patch)
tree62154c3a2c082c73f39d4537b73267cd8f4b8735 /apps
parent509117db9043cbbac348a652c297b850238ee6d9 (diff)
downloadrockbox-9d14b73989b7703920c5f9542e46c07a90ed3e6a.zip
rockbox-9d14b73989b7703920c5f9542e46c07a90ed3e6a.tar.gz
rockbox-9d14b73989b7703920c5f9542e46c07a90ed3e6a.tar.bz2
rockbox-9d14b73989b7703920c5f9542e46c07a90ed3e6a.tar.xz
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
Diffstat (limited to 'apps')
-rw-r--r--apps/recorder/peakmeter.c12
1 files 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;
}