work around a ue 5.5 regression (UE-212224) while sensecom is running and gloves are connected
This commit is contained in:
@@ -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/),
|
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).
|
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
|
## [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.
|
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.
|
||||||
|
|||||||
@@ -72,12 +72,12 @@ struct FSGHMDTracker::FStaticImpl
|
|||||||
void FSGHMDTracker::FStaticImpl::GetHMDMonitorInfo(
|
void FSGHMDTracker::FStaticImpl::GetHMDMonitorInfo(
|
||||||
IHeadMountedDisplay* Device, IHeadMountedDisplay::MonitorInfo& OutMonitorInfo)
|
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);
|
Device->GetHMDMonitorInfo(OutMonitorInfo);
|
||||||
return;
|
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<TOptional<IHeadMountedDisplay::MonitorInfo>> Promise;
|
TPromise<TOptional<IHeadMountedDisplay::MonitorInfo>> Promise;
|
||||||
const TFuture<TOptional<IHeadMountedDisplay::MonitorInfo>> Future{Promise.GetFuture()};
|
const TFuture<TOptional<IHeadMountedDisplay::MonitorInfo>> Future{Promise.GetFuture()};
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ void FSGHMDTracker::FStaticImpl::GetHMDMonitorInfo(
|
|||||||
OutMonitorInfo = Result.GetValue();
|
OutMonitorInfo = Result.GetValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 6 */
|
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 5 */
|
||||||
}
|
}
|
||||||
|
|
||||||
FName FSGHMDTracker::GetDeviceName()
|
FName FSGHMDTracker::GetDeviceName()
|
||||||
|
|||||||
Reference in New Issue
Block a user