From ad862adc83497ef71c216b15e9e6b4db1b02d95a Mon Sep 17 00:00:00 2001 From: Hyper <34012267+hyperbx@users.noreply.github.com> Date: Sun, 8 Dec 2024 17:05:45 +0000 Subject: [PATCH] Move Windows version to OS namespace --- UnleashedRecomp/CMakeLists.txt | 12 ++++++++--- UnleashedRecomp/kernel/platform.h | 11 ---------- UnleashedRecomp/os/process.cpp | 4 ++-- UnleashedRecomp/os/version.cpp | 7 +++++++ UnleashedRecomp/os/version.h | 8 ++++++++ UnleashedRecomp/os/version_detail.h | 13 ++++++++++++ .../win32/version_win32.cpp} | 10 +++------- UnleashedRecomp/patches/audio_patches.cpp | 20 +++++++++---------- UnleashedRecomp/ui/window.h | 4 ++-- 9 files changed, 54 insertions(+), 35 deletions(-) delete mode 100644 UnleashedRecomp/kernel/platform.h create mode 100644 UnleashedRecomp/os/version.cpp create mode 100644 UnleashedRecomp/os/version.h create mode 100644 UnleashedRecomp/os/version_detail.h rename UnleashedRecomp/{kernel/platform.cpp => os/win32/version_win32.cpp} (72%) diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index a38c761..0d8f561 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -62,16 +62,22 @@ set(SWA_KERNEL_CXX_SOURCES "kernel/xdm.cpp" "kernel/heap.cpp" "kernel/memory.cpp" - "kernel/platform.cpp" "kernel/xam.cpp" "kernel/io/file_system.cpp" ) set(SWA_OS_CXX_SOURCES - "os/win32/process_win32.cpp" "os/process.cpp" + "os/version.cpp" ) +if (WIN32) + list(APPEND SWA_OS_CXX_SOURCES + "os/win32/process_win32.cpp" + "os/win32/version_win32.cpp" + ) +endif() + set(SWA_CPU_CXX_SOURCES "cpu/guest_thread.cpp" "cpu/code_cache.cpp" @@ -89,7 +95,7 @@ set(SWA_APU_CXX_SOURCES "apu/audio.cpp" ) -if(SWA_XAUDIO2) +if (SWA_XAUDIO2) list(APPEND SWA_APU_CXX_SOURCES "apu/driver/xaudio_driver.cpp") else() list(APPEND SWA_APU_CXX_SOURCES "apu/driver/miniaudio_driver.cpp") diff --git a/UnleashedRecomp/kernel/platform.h b/UnleashedRecomp/kernel/platform.h deleted file mode 100644 index a03379a..0000000 --- a/UnleashedRecomp/kernel/platform.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -struct PlatformVersion -{ -public: - uint32_t Major{}; - uint32_t Minor{}; - uint32_t Build{}; -}; - -extern PlatformVersion GetPlatformVersion(); diff --git a/UnleashedRecomp/os/process.cpp b/UnleashedRecomp/os/process.cpp index 68b06d7..bfad676 100644 --- a/UnleashedRecomp/os/process.cpp +++ b/UnleashedRecomp/os/process.cpp @@ -1,5 +1,5 @@ -#include "process.h" -#include "process_detail.h" +#include +#include std::filesystem::path os::process::GetExecutablePath() { diff --git a/UnleashedRecomp/os/version.cpp b/UnleashedRecomp/os/version.cpp new file mode 100644 index 0000000..7691d9d --- /dev/null +++ b/UnleashedRecomp/os/version.cpp @@ -0,0 +1,7 @@ +#include +#include + +os::version::detail::OSVersion os::version::GetOSVersion() +{ + return detail::GetOSVersion(); +} diff --git a/UnleashedRecomp/os/version.h b/UnleashedRecomp/os/version.h new file mode 100644 index 0000000..398b7ee --- /dev/null +++ b/UnleashedRecomp/os/version.h @@ -0,0 +1,8 @@ +#pragma once + +#include + +namespace os::version +{ + detail::OSVersion GetOSVersion(); +} diff --git a/UnleashedRecomp/os/version_detail.h b/UnleashedRecomp/os/version_detail.h new file mode 100644 index 0000000..8c16c98 --- /dev/null +++ b/UnleashedRecomp/os/version_detail.h @@ -0,0 +1,13 @@ +#pragma once + +namespace os::version::detail +{ + struct OSVersion + { + uint32_t Major{}; + uint32_t Minor{}; + uint32_t Build{}; + }; + + OSVersion GetOSVersion(); +} diff --git a/UnleashedRecomp/kernel/platform.cpp b/UnleashedRecomp/os/win32/version_win32.cpp similarity index 72% rename from UnleashedRecomp/kernel/platform.cpp rename to UnleashedRecomp/os/win32/version_win32.cpp index 97c072f..79e7bfa 100644 --- a/UnleashedRecomp/kernel/platform.cpp +++ b/UnleashedRecomp/os/win32/version_win32.cpp @@ -1,14 +1,11 @@ -#include +#include -#if _WIN32 LIB_FUNCTION(LONG, "ntdll.dll", RtlGetVersion, PRTL_OSVERSIONINFOW); -#endif -PlatformVersion GetPlatformVersion() +os::version::detail::OSVersion os::version::detail::GetOSVersion() { - auto result = PlatformVersion{}; + auto result = os::version::detail::OSVersion{}; -#if _WIN32 OSVERSIONINFOEXW osvi = { 0 }; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW); @@ -18,7 +15,6 @@ PlatformVersion GetPlatformVersion() result.Major = osvi.dwMajorVersion; result.Minor = osvi.dwMinorVersion; result.Build = osvi.dwBuildNumber; -#endif return result; } diff --git a/UnleashedRecomp/patches/audio_patches.cpp b/UnleashedRecomp/patches/audio_patches.cpp index e42d37a..4a0c810 100644 --- a/UnleashedRecomp/patches/audio_patches.cpp +++ b/UnleashedRecomp/patches/audio_patches.cpp @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #include @@ -13,24 +13,24 @@ using namespace winrt; using namespace winrt::Windows::Foundation; using namespace winrt::Windows::Media::Control; -GlobalSystemMediaTransportControlsSessionManager m_sessionManager = nullptr; +static GlobalSystemMediaTransportControlsSessionManager g_sessionManager = nullptr; -GlobalSystemMediaTransportControlsSessionManager GetSessionManager() +static GlobalSystemMediaTransportControlsSessionManager GetSessionManager() { - if (m_sessionManager) - return m_sessionManager; + if (g_sessionManager) + return g_sessionManager; init_apartment(); - return m_sessionManager = GlobalSystemMediaTransportControlsSessionManager::RequestAsync().get(); + return g_sessionManager = GlobalSystemMediaTransportControlsSessionManager::RequestAsync().get(); } -GlobalSystemMediaTransportControlsSession GetCurrentSession() +static GlobalSystemMediaTransportControlsSession GetCurrentSession() { return GetSessionManager().GetCurrentSession(); } -bool IsExternalAudioPlaying() +static bool IsExternalAudioPlaying() { auto session = GetCurrentSession(); @@ -43,7 +43,7 @@ bool IsExternalAudioPlaying() int AudioPatches::m_isAttenuationSupported = -1; #endif -be* GetVolume(bool isMusic = true) +static be* GetVolume(bool isMusic = true) { auto ppUnkClass = (be*)g_memory.Translate(0x83362FFC); @@ -60,7 +60,7 @@ bool AudioPatches::CanAttenuate() if (m_isAttenuationSupported >= 0) return m_isAttenuationSupported; - auto version = GetPlatformVersion(); + auto version = os::version::GetOSVersion(); m_isAttenuationSupported = version.Major >= 10 && version.Build >= 17763; diff --git a/UnleashedRecomp/ui/window.h b/UnleashedRecomp/ui/window.h index 4122563..9ace629 100644 --- a/UnleashedRecomp/ui/window.h +++ b/UnleashedRecomp/ui/window.h @@ -2,12 +2,12 @@ #include #include +#include #include #include #if _WIN32 #include -#include #pragma comment(lib, "dwmapi.lib") #endif @@ -76,7 +76,7 @@ public: static void SetDarkTitleBar(bool isEnabled) { #if _WIN32 - auto version = GetPlatformVersion(); + auto version = os::version::GetOSVersion(); if (version.Major < 10 || version.Build <= 17763) return;