diff --git a/src/xrt/state_trackers/oxr/oxr_swapchain.c b/src/xrt/state_trackers/oxr/oxr_swapchain.c index accd09718..e48c013ff 100644 --- a/src/xrt/state_trackers/oxr/oxr_swapchain.c +++ b/src/xrt/state_trackers/oxr/oxr_swapchain.c @@ -38,6 +38,13 @@ oxr_swapchain_acquire_image(struct oxr_logger *log, } sc->acquired_index = (int)index; + + // If the compositor is resuing the image, + // mark it as invalid to use in xrEndFrame. + if (sc->released_index == (int)index) { + sc->released_index = -1; + } + *out_index = index; return XR_SUCCESS; @@ -78,6 +85,8 @@ oxr_swapchain_release_image(struct oxr_logger *log, return oxr_error(log, XR_ERROR_RUNTIME_FAILURE, " call to xsc->release_image failed"); } + + // Overwrite the old released image, with new. sc->released_index = sc->acquired_index; sc->acquired_index = -1;