mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-06 09:00:35 +02:00
Fix the cross-provider review's findings on VR APK support
patch() turns corrupt-manifest struct/index errors into FrameError; a missing layer build says so; the signing key falls back to a rename where hard links aren't supported and explains how to recover from a bad cached key; the layer nulls an instance it can't destroy and logs xrLocateSpaces once. Not changed: the 1.1 Meta profile names match xr.xml's promoted names (meta/touch_pro_controller, meta/touch_plus_controller), and grip_surface is palm_ext renamed, so the rewrite stays (now commented). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
50d5e14539
commit
f10282294d
7 files changed
+37
-11
No files matched your search
@@ -121,7 +121,8 @@ XrResult XRAPI_CALL destroySession(XrSession s) try {
|
||||
XrResult XRAPI_CALL locateSpaces(XrSession s, const XrSpacesLocateInfo* in, XrSpaceLocations* out) try {
|
||||
auto d = get(s); if (!d) return XR_ERROR_HANDLE_INVALID;
|
||||
if (!d->locate) return XR_ERROR_FUNCTION_UNSUPPORTED;
|
||||
LOG("xrLocateSpaces -> xrLocateSpacesKHR (core/KHR type aliases)");
|
||||
static std::once_flag logged; // called every frame
|
||||
std::call_once(logged, [] { LOG("xrLocateSpaces -> xrLocateSpacesKHR (core/KHR type aliases)"); });
|
||||
return frame::locate(d->locate, s, in, out);
|
||||
} GUARD_END
|
||||
XrResult XRAPI_CALL threadSettings(XrSession s, XrAndroidThreadTypeKHR type, uint32_t tid) try {
|
||||
@@ -226,7 +227,9 @@ XrResult XRAPI_CALL createLayer(const XrInstanceCreateInfo* info, const XrApiLay
|
||||
d->gipa = next; d->instance = *instance;
|
||||
d->destroy = proc<PFN_xrDestroyInstance>(next, *instance, "xrDestroyInstance");
|
||||
// A successful runtime instance must expose xrDestroyInstance.
|
||||
if (!d->destroy) { LOG("invalid downstream: missing xrDestroyInstance"); return XR_ERROR_INITIALIZATION_FAILED; }
|
||||
if (!d->destroy) { // nothing could ever destroy it, so don't hand it out
|
||||
LOG("invalid downstream: missing xrDestroyInstance"); *instance = XR_NULL_HANDLE; return XR_ERROR_INITIALIZATION_FAILED;
|
||||
}
|
||||
try {
|
||||
d->enabled = std::move(plan.downstream); d->stubbed = std::move(plan.stubbed);
|
||||
d->palm = frame::has(d->enabled, "XR_EXT_palm_pose");
|
||||
|
||||
Reference in new issue
Block a user