Repository navigation
fix(libSceSystemGesture): report no touch events for the primitive and recognizer calls - #3174
Conversation
…d recognizer calls WIP: the TechnicalDebt entry for the silently successful calls is still missing. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…recognizer call Moves the no-touch line to "Silent stubs" and records the error-code disagreement with KytyPS5. Co-Authored-By: Claude <noreply@anthropic.com>
Progress report (942a174 → 894ef6d)📈 System libraries: 85.93% (+0.31%, +10 implemented functions) ✅ 10 implemented
|
Dextroid17
left a comment
There was a problem hiding this comment.
The shape of this one is what makes it reviewable: ten exports, each given the answer the file's existing no-touch model gives, and the three that are not settled named as still throwing with the reason they are not. Leaving GetTouchEventByEventID, GetPrimitiveTouchEventByPrimitiveID and GetTouchRecognizerInformation on NotImplemented because their not-found code and information layout are not established is the right call, and saying so is what stops it reading as an oversight.
The negative test is the strongest part, and it is worth saying why. Every handle check, null check and count write in the test has a mutation that removes it and a run that then fails, which demonstrates that a case exists behind each one — the thing a test for a table of behaviours otherwise never establishes. Those runs and the Linux/GCC 16 pass are the author's measurements; what a reviewer can reproduce locally is that the first new call throws on main.
The INDEX_OUT_OF_ARRAY choice is the one worth naming. Having GetPrimitiveTouchEventByIndex return what GetTouchEventByIndex already returns on main, rather than something that seemed more correct, keeps the two recognizer kinds consistent — and INVALID_ARGUMENT for a null recognizer is what KytyPS5 returns for the same call, which is checkable rather than a matter of taste. Both are the right kind of default.
The three that still throw are left throwing deliberately. They keep NotImplemented because their not-found code and information layout are not settled, and throwing is the conventions-compliant state for an unimplemented path — so they belong with the throwing paths, not with the silent stubs that need a debt entry. Nothing further needed.
Written with AI assistance.
|
Merged with Linux CI red on three AGC tests ( |
What
Carries @xXPBSXx's branch from #3144 (
fix/systemgesture-no-touch-events, commits kept with their authorship). Intake is paused for new contributors, and the issue asks a maintainer to carry it.Ten
libSceSystemGestureexports threw onmain. They now follow the no-touch model the file already uses: recognizers exist but never report an event, and handle and pointer arguments are checked.GetPrimitiveTouchEventsandGetTouchEventsreport 0 events and leave the buffer untouched.GetPrimitiveTouchEventsCountreturns 0.GetPrimitiveTouchEventByIndexreturnsINDEX_OUT_OF_ARRAY, likeGetTouchEventByIndexonmain.Append,Remove,ResetandUpdateAllsucceed for a valid handle and recognizer, as doResetPrimitiveTouchRecognizerandUpdateTouchRecognizerRectangle.UpdateTouchRecognizernow returnsINVALID_ARGUMENTfor a null recognizer, as KytyPS5 does.GetTouchEventByEventID,GetPrimitiveTouchEventByPrimitiveIDandGetTouchRecognizerInformationkeep throwing. Their not-found code and the information layout aren't settled.Titles that stop on these on
main:sceSystemGestureAppendTouchRecognizer not implementedright after save data init (log in feat(systemgesture): implement the recognizer and no-touch event exports #572, @gjonn). It also importsRemoveandUpdateAll.Behaviour follows KytyPS5 (
libSystemService.cpp,SystemGesture), except for the error codes. Those stay at the 0x80D1 values this file already uses onmain, which @oneandonlydean OK'd on #572. KytyPS5 uses 0x8089 (INVALID_ARGUMENT0x80890001,INVALID_HANDLE0x80890006). TechnicalDebt now lists the disagreement, and the no-touch line moved from "Functional" to "Silent stubs".My commit adds the handle and null checks of
Remove/Reset/Update/UpdateTouchRecognizerRectangleto the test.Tested
Linux (CachyOS), GCC 16, Release.
guest_system_gesturepasses.mainthe first new call throws.tools/check_conventions.pypasses.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)