diff --git a/Handbook/src/appendix/changelog.md b/Handbook/src/appendix/changelog.md index 6a97b8b8..4897a6b3 100644 --- a/Handbook/src/appendix/changelog.md +++ b/Handbook/src/appendix/changelog.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +This patch release addresses a severe regression affecting UE `5.5` projects with specific settings. + +### Fixed + +- Resolved a critical deadlock between the rendering and game threads in Unreal Engine `5.5` that when `IHeadMountedDisplay::GetHMDMonitorInfo()` is invoked from `FSGXRTracker::GetControllerTransform()` in certain conditions; specifically while SenseCom is running and gloves are present and connected. This issue is [related to critical deadlock issue (UE-212224), occurring during PipelinedFrameState acquisition, which had already been addressed for the plugin versions running on UE `5.6+`](#260---2025-06-04). Because it only gets triggered under specific project settings, we were previously unaware that it also affected IHeadMountedDisplay::GetHMDMonitorInfo() in UE 5.5. + ## [2.7.0] - 2025-11-18 This minor release focuses on delivering performance improvements, made possible by major optimizations in the underlying proprietary SenseGlove libraries, while also introducing some breaking changes. diff --git a/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp b/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp index 347b2e52..f64d217e 100644 --- a/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp +++ b/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp @@ -72,12 +72,12 @@ struct FSGHMDTracker::FStaticImpl void FSGHMDTracker::FStaticImpl::GetHMDMonitorInfo( IHeadMountedDisplay* Device, IHeadMountedDisplay::MonitorInfo& OutMonitorInfo) { -#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 5 +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 4 Device->GetHMDMonitorInfo(OutMonitorInfo); return; -#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 5 */ +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 4 */ -#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 6 +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 TPromise> Promise; const TFuture> Future{Promise.GetFuture()}; @@ -100,7 +100,7 @@ void FSGHMDTracker::FStaticImpl::GetHMDMonitorInfo( OutMonitorInfo = Result.GetValue(); } } -#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 6 */ +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */ } FName FSGHMDTracker::GetDeviceName()