From b5648000ba63476b99823046a6702881a28fd6c0 Mon Sep 17 00:00:00 2001 From: Brandon Low Date: Tue, 7 Mar 2006 04:56:55 +0000 Subject: Slight simplification of scroll button driver git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8939 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/button.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'firmware/drivers') diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index e2a4e82a58..cdbb9f5374 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c @@ -128,7 +128,6 @@ static int ipod_4g_button_read(void) static int clickwheel_down = 0; static int old_wheel_value = -1; int wheel_keycode = BUTTON_NONE; - int wheel_delta, wheel_delta_abs; int new_wheel_value; int btn = BUTTON_NONE; @@ -162,17 +161,16 @@ static int ipod_4g_button_read(void) clickwheel_down = 1; backlight_on(); if (old_wheel_value != -1) { - wheel_delta = new_wheel_value - old_wheel_value; - wheel_delta_abs = wheel_delta < 0 ? -wheel_delta - : wheel_delta; - - if (wheel_delta_abs > 48) { - if (old_wheel_value > new_wheel_value) - /* wrapped around the top going clockwise */ - wheel_delta += 96; - else if (old_wheel_value < new_wheel_value) - /* wrapped around the top going counterclockwise */ wheel_delta -= 96; + int wheel_delta; + if (old_wheel_value > new_wheel_value + 48) { + /* Forward wrapping case */ + wheel_delta = new_wheel_value + 96 - old_wheel_value; + } else { + wheel_delta = new_wheel_value - old_wheel_value; + if (wheel_delta > 48) + wheel_delta -= 96; /* Backward wrapping case */ } + /* TODO: these thresholds should most definitely be settings, and we're probably going to want a more advanced scheme than this anyway. */ -- cgit v1.2.3