From c052d11673e0fea7bd426adfa851de2e24adc99b Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Sat, 30 May 2026 12:49:12 +0300 Subject: [PATCH] skin: touchscreen: fix rewind in long files Fix a possible overflow in the elapsed time calculation. Change-Id: I211777d8144f76889003239b9a49e4fc56184c8f --- apps/gui/skin_engine/skin_touchsupport.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/apps/gui/skin_engine/skin_touchsupport.c b/apps/gui/skin_engine/skin_touchsupport.c index 7098d8aa05..7d05d4ea5c 100644 --- a/apps/gui/skin_engine/skin_touchsupport.c +++ b/apps/gui/skin_engine/skin_touchsupport.c @@ -204,24 +204,11 @@ int skin_get_touchaction(struct gui_wps *gwps, int* edge_offset) if (!gwps->id3) break; - if (gevent.id == GESTURE_HOLD || - gevent.id == GESTURE_DRAGSTART || - gevent.id == GESTURE_DRAG) - { - audio_pre_ff_rewind(); - gwps->id3->elapsed = gwps->id3->length * (*edge_offset) / 1000; - } - else if (gevent.id == GESTURE_RELEASE) - { - audio_ff_rewind(gwps->id3->elapsed); - } - else - { - gwps->id3->elapsed = gwps->id3->length * (*edge_offset) / 1000; - audio_pre_ff_rewind(); - audio_ff_rewind(gwps->id3->elapsed); - } + audio_pre_ff_rewind(); + gwps->id3->elapsed = gwps->id3->length / 1000 * (*edge_offset); + if (gevent.id == GESTURE_TAP || gevent.id == GESTURE_RELEASE) + audio_ff_rewind(gwps->id3->elapsed); } break; case ACTION_TOUCH_VOLUME: