mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-09 02:53:23 +09:00
The last thing between the host-framed surface and a run: the sub-byte on the wire that names it. ServerOwned had one (7) and the host frame had none, so the encoder refused the op with UnknownWindowKind - a correct refusal, and the reason the first run of MOBILEGL_IPC_SURFACE=host failed in the codec rather than anywhere near the pixels. - protocol.fbs: WindowKind::HostFrame = 8, appended, legal on CreateWindowSurface only and always with nativeToken 0 - the same rules ServerOwned carries, for the same reason: no pointer of any process's window system crosses (Rule G/H). - SurfaceRefusal: HostFrameOnSetWindowHandle = 5, its own code rather than reusing the server-owned one: a refusal that names the wrong owner sends the next reader to the wrong place. - SurfaceOpCodec: the encode and decode arms, the two wire errors that go with them (HostFrameTokenNotZero latches as corruption, HostFrameOnSetWindowHandle is a named refusal), and the range bound that had ServerOwned as its upper limit now ends at HostFrame. - protocol_generated.h regenerated with the pinned submodule's flatc (scripts/gen_protocol.py), diff being exactly the two appended enumerators. Both ends must be rebuilt together, as any protocol revision here: the container's client and the device's server went out with this on either side.