Commit 48a2b52
Park the Beta pointer instead of freezing it when there's nothing to solve
StateManager holds the last value written, so 'write nothing' reads as 'keep
pointing there forever'. If the pointer got switched off, or its calibration was
dropped by a presentation change, ingest simply stopped writing IR axes and the
game's cursor stayed pegged wherever it last landed. Now it writes centre + hide
once and remembers it did.
Done on the CoreMotion queue rather than from the setter that turned the pointer
off, because ciface::iOS::StateManager has no internal locking at all -- plain
std::map writes, see StateManager.cpp -- so every Beta pointer write is kept on
that one serial queue rather than adding a second writing thread. (The stock app
already races StateManager between the main thread and TCDeviceMotion's queue;
that's pre-existing and not something this branch should make worse.)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent cb9a291 commit 48a2b52
1 file changed
Lines changed: 21 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
60 | 64 | | |
61 | 65 | | |
62 | 66 | | |
| |||
255 | 259 | | |
256 | 260 | | |
257 | 261 | | |
| 262 | + | |
258 | 263 | | |
259 | 264 | | |
260 | 265 | | |
| |||
322 | 327 | | |
323 | 328 | | |
324 | 329 | | |
| 330 | + | |
| 331 | + | |
325 | 332 | | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
326 | 347 | | |
327 | 348 | | |
328 | 349 | | |
| |||
0 commit comments