diff --git a/Plugins/SenseGlove/Handbook/GNUmakefile b/Plugins/SenseGlove/Handbook/GNUmakefile index 66d60ca..bc9b345 100644 --- a/Plugins/SenseGlove/Handbook/GNUmakefile +++ b/Plugins/SenseGlove/Handbook/GNUmakefile @@ -368,7 +368,7 @@ install-build-deps: @cargo install mdbook --version "0.4.49" --locked @cargo install xq --vers "^0.4" --locked @cargo install mdbook-alerts --vers "^0.7" --locked - @cargo install mdbook-pdf --vers "^0.1" --locked + @cargo install mdbook-pdf --vers "0.1.11" --locked ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX)) @echo "Installing mdbook-pdf-outline..." @python -m venv $(VIRTUAL_ENV) \ diff --git a/Plugins/SenseGlove/Handbook/src/appendix/changelog.md b/Plugins/SenseGlove/Handbook/src/appendix/changelog.md index 6a97b8b..c7151a6 100644 --- a/Plugins/SenseGlove/Handbook/src/appendix/changelog.md +++ b/Plugins/SenseGlove/Handbook/src/appendix/changelog.md @@ -5,6 +5,24 @@ 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] + +### Documentation + +- Minor changelog formatting fixes. + +## [2.7.1] - 2025-12-09 + +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`. + +### Documentation + +- Locked the [mdbook-pdf](https://github.com/HollowMan6/mdbook-pdf) crate to [`v0.1.11`](https://github.com/HollowMan6/mdbook-pdf/releases/tag/v0.1.11) due to the following `v0.1.12` panick during PDF generation: called `Result::unwrap()` on an `Err` value: Unable to deserialize the `RenderContext`. + ## [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/Plugins/SenseGlove/Handbook/src/appendix/platform-support-matrix.md b/Plugins/SenseGlove/Handbook/src/appendix/platform-support-matrix.md index 867aa77..fffcc1e 100644 --- a/Plugins/SenseGlove/Handbook/src/appendix/platform-support-matrix.md +++ b/Plugins/SenseGlove/Handbook/src/appendix/platform-support-matrix.md @@ -2,10 +2,10 @@ | | **Windows (MSVC 2017)** | **Windows (MSVC 2019)** | **Windows (MSVC 2022)** | **Linux x86-64 (Native Toolchain)** | **Linux AArch64 (Native Toolchain)** | **Meta Quest Standalone (Android NDK)** | **HTC VIVE Standalone (Android NDK)** | **Fab** | **Azure DevOps Version** | |:--------:|-------------------------|-------------------------|-------------------------|:-----------------------------------:|:------------------------------------:|:---------------------------------------:|:-------------------------------------:|:--------:|:------------------------:| -| **5.7** | ❌ | ❌ | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x (r25b) | ❓ | ✅ v2.7.0 | ✅ v2.7.0 | -| **5.6** | ❌ | ❌ | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x (r25b) | ❓ | ✅ v2.7.0 | ✅ v2.7.0 | -| **5.5** | ❌ | ❌ | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x (r25b) | ❓ | ✅ v2.7.0 | ✅ v2.7.0 | -| **5.4** | ❌ | ❌ | ⚠️ v2.7.x | ⚠️ v2.7.x | ⚠️ v2.7.x | ⚠️ v2.7.x (r25b) | ⚠️ v2.7.x (r25b) | ⚠️ v2.7.0 | ⚠️ v2.7.0 | +| **5.7** | ❌ | ❌ | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x (r25b) | ❓ | ✅ v2.7.1 | ✅ v2.7.1 | +| **5.6** | ❌ | ❌ | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x (r25b) | ❓ | ✅ v2.7.1 | ✅ v2.7.1 | +| **5.5** | ❌ | ❌ | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x | ✅ v2.7.x (r25b) | ❓ | ✅ v2.7.1 | ✅ v2.7.1 | +| **5.4** | ❌ | ❌ | ⚠️ v2.7.x | ⚠️ v2.7.x | ⚠️ v2.7.x | ⚠️ v2.7.x (r25b) | ⚠️ v2.7.x (r25b) | ⚠️ v2.7.1 | ⚠️ v2.7.1 | | **5.3** | ❌ | ⚠️ v2.6.x | ⚠️ v2.6.x | ⚠️ v2.6.x | ⚠️ v2.6.x | ⚠️ v2.6.x (r25b) | ⚠️ v2.6.x (r25b) | ⚠️ v2.6.3 | ⚠️ v2.6.3 | | **5.2** | ❌ | ⚠️ v2.4.x | ⚠️ v2.4.x | ⚠️ v2.4.x | ⚠️ v2.4.x | ⚠️ v2.4.x (r25b) | ❓ | ⚠️ v2.4.2 | ⚠️ v2.4.2 | | **5.1** | ❌ | ⚠️ v2.0.x | ⚠️ v2.0.x | ⚠️ v2.0.x | ⚠️ v2.0.x | ⚠️ v2.0.x (r25b) | ❓ | ⚠️ v2.0.0 | ⚠️ v2.0.2 | diff --git a/Plugins/SenseGlove/SenseGlove.uplugin b/Plugins/SenseGlove/SenseGlove.uplugin index fdf456b..1d9c1d4 100644 --- a/Plugins/SenseGlove/SenseGlove.uplugin +++ b/Plugins/SenseGlove/SenseGlove.uplugin @@ -1,7 +1,7 @@ { "FileVersion": 3, "Version": 1, - "VersionName": "2.7.0", + "VersionName": "2.7.1", "FriendlyName": "SenseGlove", "Description": "Integrating the SenseGlove haptic controller into Unreal Engine", "Category": "Virtual Reality", diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp index 347b2e5..f64d217 100644 --- a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp +++ b/Plugins/SenseGlove/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()