Rev 37434 |
Rev 37436 |
Go to most recent revision |
Last modification |
Compare with Previous |
View Log
| RSS feed
Last modification
- Rev 37435 2026-08-27 06:11:22
- Author: amit
- Log message:
- Oppo/Realme: always release the slider; 79% of presses were left held
Found by following the observation that the dragger repositions itself on click.
clickAndHold() is issued at the top of every attempt, but release() sits inside
the moveByOffset > 0 branch. An attempt that fails circle detection, or produces
an unusable calibration, therefore leaves the mouse button DOWN.
Measured over 21 minutes of production:
Oppo 506 presses, 107 released -> 399 never released = 79%
Realme 247 presses, 58 released -> 189 never released = 77%
Actions is one instance per driver, created OUTSIDE the imei loop, so the stuck
press does not end with the attempt -- it leaks into the next attempt and on into
the next imei. The following clickAndHold then lands on an already-held button,
so the widget never repositions the handle and the drag simply continues from
wherever the pointer was abandoned.
That matches what the logs show. Validated locally against both live widgets:
a clean press repositions the handle +22px on the first pixel of movement (half
the 45px handle: moveToElement centres the pointer, the widget aligns to it), and
the transfer is then linear -- 1.10 piece px per mouse px on oppo, 1.20 on realme.
Production instead shows a jump of +0px on 31 oppo attempts and -34..-41px on
another 39, and oppo starts 13% of attempts with margin-left already >= 30px
(mean 9.2px) against realme's 0% (mean 3.2px). Those are the fingerprints of a
drag resuming rather than starting.
Tracks the press in a flag and releases on every exit: before the retry refresh,
and again after the loop so the widget-not-found break cannot carry a held button
into the next imei. Release is wrapped, so a failure to release is logged rather
than killing the batch.
Ruled out while getting here, so as not to re-chase: the reposition is NOT an
animation race (position is stable from t=0 to 1s despite transition:all), and it
is NOT asymmetric between the brands -- both snap +22px identically, so this bug
does not by itself explain oppo 14% vs realme 64%. Both brands should improve.