summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/button.c20
1 files changed, 9 insertions, 11 deletions
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)
128 static int clickwheel_down = 0; 128 static int clickwheel_down = 0;
129 static int old_wheel_value = -1; 129 static int old_wheel_value = -1;
130 int wheel_keycode = BUTTON_NONE; 130 int wheel_keycode = BUTTON_NONE;
131 int wheel_delta, wheel_delta_abs;
132 int new_wheel_value; 131 int new_wheel_value;
133 int btn = BUTTON_NONE; 132 int btn = BUTTON_NONE;
134 133
@@ -162,17 +161,16 @@ static int ipod_4g_button_read(void)
162 clickwheel_down = 1; 161 clickwheel_down = 1;
163 backlight_on(); 162 backlight_on();
164 if (old_wheel_value != -1) { 163 if (old_wheel_value != -1) {
165 wheel_delta = new_wheel_value - old_wheel_value; 164 int wheel_delta;
166 wheel_delta_abs = wheel_delta < 0 ? -wheel_delta 165 if (old_wheel_value > new_wheel_value + 48) {
167 : wheel_delta; 166 /* Forward wrapping case */
168 167 wheel_delta = new_wheel_value + 96 - old_wheel_value;
169 if (wheel_delta_abs > 48) { 168 } else {
170 if (old_wheel_value > new_wheel_value) 169 wheel_delta = new_wheel_value - old_wheel_value;
171 /* wrapped around the top going clockwise */ 170 if (wheel_delta > 48)
172 wheel_delta += 96; 171 wheel_delta -= 96; /* Backward wrapping case */
173 else if (old_wheel_value < new_wheel_value)
174 /* wrapped around the top going counterclockwise */ wheel_delta -= 96;
175 } 172 }
173
176 /* TODO: these thresholds should most definitely be 174 /* TODO: these thresholds should most definitely be
177 settings, and we're probably going to want a more 175 settings, and we're probably going to want a more
178 advanced scheme than this anyway. */ 176 advanced scheme than this anyway. */