diff --git a/menu/menu_input.c b/menu/menu_input.c index 0d0361d924..00b6bc1f5b 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -102,11 +102,7 @@ typedef struct menu_input int16_t y; int16_t dx; int16_t dy; - int16_t start_x; - int16_t start_y; float accel; - float accel0; - float accel1; bool pressed[2]; bool dragging; bool back; @@ -1072,6 +1068,8 @@ static int menu_input_pointer_post_iterate( size_t selection; static bool pointer_oldpressed[2]; static bool pointer_oldback = false; + static int16_t start_x = 0; + static int16_t start_y = 0; static int16_t pointer_old_x = 0; static int16_t pointer_old_y = 0; int ret = 0; @@ -1100,8 +1098,10 @@ static int menu_input_pointer_post_iterate( { gfx_ctx_metrics_t metrics; float dpi; - int16_t pointer_x = menu_input_pointer_state(MENU_POINTER_X_AXIS); - int16_t pointer_y = menu_input_pointer_state(MENU_POINTER_Y_AXIS); + static float accel0 = 0.0f; + static float accel1 = 0.0f; + int16_t pointer_x = menu_input_pointer_state(MENU_POINTER_X_AXIS); + int16_t pointer_y = menu_input_pointer_state(MENU_POINTER_Y_AXIS); metrics.type = DISPLAY_METRIC_DPI; metrics.value = &dpi; @@ -1111,16 +1111,16 @@ static int menu_input_pointer_post_iterate( if (!pointer_oldpressed[0]) { menu_input->pointer.accel = 0; - menu_input->pointer.accel0 = 0; - menu_input->pointer.accel1 = 0; - menu_input->pointer.start_x = pointer_x; - menu_input->pointer.start_y = pointer_y; + accel0 = 0; + accel1 = 0; + start_x = pointer_x; + start_y = pointer_y; pointer_old_x = pointer_x; pointer_old_y = pointer_y; pointer_oldpressed[0] = true; } - else if (abs(pointer_x - menu_input->pointer.start_x) > (dpi / 10) - || abs(pointer_y - menu_input->pointer.start_y) > (dpi / 10)) + else if (abs(pointer_x - start_x) > (dpi / 10) + || abs(pointer_y - start_y) > (dpi / 10)) { float s, delta_time; menu_input->pointer.dragging = true; @@ -1131,11 +1131,11 @@ static int menu_input_pointer_post_iterate( menu_animation_ctl(MENU_ANIMATION_CTL_DELTA_TIME, &delta_time); - s = (menu_input->pointer.dy * 550000000.0 ) /( dpi * delta_time ); - menu_input->pointer.accel = (menu_input->pointer.accel0 - + menu_input->pointer.accel1 + s) / 3; - menu_input->pointer.accel0 = menu_input->pointer.accel1; - menu_input->pointer.accel1 = menu_input->pointer.accel; + s = (menu_input->pointer.dy * 550000000.0 ) / + ( dpi * delta_time ); + menu_input->pointer.accel = (accel0 + accel1 + s) / 3; + accel0 = accel1; + accel1 = menu_input->pointer.accel; } } else @@ -1146,8 +1146,8 @@ static int menu_input_pointer_post_iterate( { menu_ctx_pointer_t point; - point.x = menu_input->pointer.start_x; - point.y = menu_input->pointer.start_y; + point.x = start_x; + point.y = start_y; point.ptr = menu_input->pointer.ptr; point.cbs = cbs; point.entry = entry; @@ -1159,8 +1159,8 @@ static int menu_input_pointer_post_iterate( } pointer_oldpressed[0] = false; - menu_input->pointer.start_x = 0; - menu_input->pointer.start_y = 0; + start_x = 0; + start_y = 0; pointer_old_x = 0; pointer_old_y = 0; menu_input->pointer.dx = 0;