diff --git a/Sources/Plasma/CoreLib/CMakeLists.txt b/Sources/Plasma/CoreLib/CMakeLists.txt index 5535b2ef07..6b9e04c62c 100644 --- a/Sources/Plasma/CoreLib/CMakeLists.txt +++ b/Sources/Plasma/CoreLib/CMakeLists.txt @@ -35,6 +35,7 @@ set(CoreLib_SOURCES plLoadMask.cpp plProduct.cpp plViewTransform.cpp + hsWindows.cpp ) if(WIN32 AND NOT CYGWIN) diff --git a/Sources/Plasma/CoreLib/HeadSpin.cpp b/Sources/Plasma/CoreLib/HeadSpin.cpp index 0646355f48..715c804dfc 100644 --- a/Sources/Plasma/CoreLib/HeadSpin.cpp +++ b/Sources/Plasma/CoreLib/HeadSpin.cpp @@ -567,30 +567,3 @@ std::vector DisplaySystemVersion() #endif return versionStrs; } - -#ifdef HS_BUILD_FOR_WIN32 -static RTL_OSVERSIONINFOEXW s_WinVer; - -const RTL_OSVERSIONINFOEXW& hsGetWindowsVersion() -{ - static bool done = false; - if (!done) { - memset(&s_WinVer, 0, sizeof(RTL_OSVERSIONINFOEXW)); - HMODULE ntdll = LoadLibraryW(L"ntdll.dll"); - hsAssert(ntdll, "Failed to LoadLibrary on ntdll???"); - - if (ntdll) { - s_WinVer.dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOEXW); - typedef LONG(WINAPI* RtlGetVersionPtr)(RTL_OSVERSIONINFOEXW*); - RtlGetVersionPtr getVersion = (RtlGetVersionPtr)GetProcAddress(ntdll, "RtlGetVersion"); - hsAssert(getVersion, "Could not find RtlGetVersion in ntdll"); - if (getVersion) { - getVersion(&s_WinVer); - done = true; - } - } - FreeLibrary(ntdll); - } - return s_WinVer; -} -#endif diff --git a/Sources/Plasma/CoreLib/hsWindows.cpp b/Sources/Plasma/CoreLib/hsWindows.cpp new file mode 100644 index 0000000000..f2f3a8f544 --- /dev/null +++ b/Sources/Plasma/CoreLib/hsWindows.cpp @@ -0,0 +1,89 @@ +/*==LICENSE==* + +CyanWorlds.com Engine - MMOG client, server and tools +Copyright (C) 2011 Cyan Worlds, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Additional permissions under GNU GPL version 3 section 7 + +If you modify this Program, or any covered work, by linking or +combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, +NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent +JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK +(or a modified version of those libraries), +containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, +PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG +JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the +licensors of this Program grant you additional +permission to convey the resulting work. Corresponding Source for a +non-source form of such a combination shall include the source code for +the parts of OpenSSL and IJG JPEG Library used as well as that of the covered +work. + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + +*==LICENSE==*/ + +#ifdef HS_BUILD_FOR_WIN32 + +#include "hsWindows.h" + +class hsCOMInit +{ +public: + hsCOMInit() + { + HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); + hsAssert(SUCCEEDED(hr), "COM failed to init???"); + } + + ~hsCOMInit() + { + CoUninitialize(); + } +} s_COMInit; + +// ============================================================================= + +static RTL_OSVERSIONINFOEXW s_WinVer; + +const RTL_OSVERSIONINFOEXW& hsGetWindowsVersion() +{ + static bool done = false; + if (!done) { + memset(&s_WinVer, 0, sizeof(RTL_OSVERSIONINFOEXW)); + HMODULE ntdll = LoadLibraryW(L"ntdll.dll"); + hsAssert(ntdll, "Failed to LoadLibrary on ntdll???"); + + if (ntdll) { + s_WinVer.dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOEXW); + typedef LONG(WINAPI* RtlGetVersionPtr)(RTL_OSVERSIONINFOEXW*); + RtlGetVersionPtr getVersion = (RtlGetVersionPtr)GetProcAddress(ntdll, "RtlGetVersion"); + hsAssert(getVersion, "Could not find RtlGetVersion in ntdll"); + if (getVersion) { + getVersion(&s_WinVer); + done = true; + } + } + FreeLibrary(ntdll); + } + return s_WinVer; +} + +#endif diff --git a/Sources/Plasma/PubUtilLib/plAudio/plAudioEndpointVolume.cpp b/Sources/Plasma/PubUtilLib/plAudio/plAudioEndpointVolume.cpp index 4724302ca5..c738bcc252 100644 --- a/Sources/Plasma/PubUtilLib/plAudio/plAudioEndpointVolume.cpp +++ b/Sources/Plasma/PubUtilLib/plAudio/plAudioEndpointVolume.cpp @@ -54,21 +54,6 @@ extern ST::string kDefaultDeviceMagic; #include #include -class hsCOMInit -{ -public: - hsCOMInit() - { - HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); - hsAssert(SUCCEEDED(hr), "COM failed to init???"); - } - - ~hsCOMInit() - { - CoUninitialize(); - } -} s_COMInit; - class plWinCoreAudioEndpointVolume : public plAudioEndpointVolume { IMMDevice* fDevice;