View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001186 | OpenMPT | General | public | 2019-01-05 18:24 | 2019-09-05 16:20 |
Reporter | manx | Assigned To | manx | ||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | resolved | Resolution | fixed | ||
Product Version | OpenMPT 1.29.00.* (old testing) | ||||
Target Version | OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first) | Fixed in Version | OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first) | ||
Summary | 0001186: Remove Windows XP support | ||||
Description | Remove Windows XP support. | ||||
Tags | No tags attached. | ||||
Attached Files | remove-winxp-v1.patch (17,886 bytes)
Index: common/BuildSettings.h =================================================================== --- common/BuildSettings.h (revision 11181) +++ common/BuildSettings.h (working copy) @@ -20,36 +20,10 @@ #if MPT_OS_WINDOWS -#if defined(MPT_BUILD_MSVC) - -#if defined(MPT_BUILD_TARGET_XP) - -#if defined(_M_X64) #ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0502 // _WIN32_WINNT_WS03 -#endif -#else // !_M_X64 -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 // _WIN32_WINNT_WINXP -#endif -#endif // _M_X64 - -#else // MPT_BUILD_TARGET - -#ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0601 // _WIN32_WINNT_WIN7 #endif -#endif // MPT_BUILD_TARGET - -#else // !MPT_BUILD_MSVC - -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 // _WIN32_WINNT_WINXP -#endif - -#endif // MPT_BUILD_MSVC - #ifndef WINVER #define WINVER _WIN32_WINNT #endif @@ -121,10 +95,8 @@ //#define MPT_WITH_ICONV //#define MPT_WITH_LTDL #if MPT_OS_WINDOWS -#if (_WIN32_WINNT >= 0x0601) #define MPT_WITH_MEDIAFOUNDATION #endif -#endif //#define MPT_WITH_MINIMP3 //#define MPT_WITH_MINIZ #define MPT_WITH_MPG123 Index: common/mptLibrary.cpp =================================================================== --- common/mptLibrary.cpp (revision 11181) +++ common/mptLibrary.cpp (working copy) @@ -100,7 +100,7 @@ if(WindowsVersion.IsAtLeast(mpt::Windows::Version::Win8)) { hasKB2533623 = true; - } else if(WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + } else { HMODULE hKernel32DLL = LoadLibraryW(L"kernel32.dll"); if(hKernel32DLL) Index: mptrack/AdvancedConfigDlg.cpp =================================================================== --- mptrack/AdvancedConfigDlg.cpp (revision 11181) +++ mptrack/AdvancedConfigDlg.cpp (working copy) @@ -170,11 +170,7 @@ if(gi == m_groups.end()) { LVGROUP group; - #if _WIN32_WINNT >= 0x0600 group.cbSize = LVGROUP_V5_SIZE; - #else - group.cbSize = sizeof(group); - #endif group.mask = LVGF_HEADER | LVGF_GROUPID; #if MPT_USTRING_MODE_WIDE group.pszHeader = const_cast<wchar_t *>(section.c_str()); Index: mptrack/BuildVariants.cpp =================================================================== --- mptrack/BuildVariants.cpp (revision 11181) +++ mptrack/BuildVariants.cpp (working copy) @@ -61,17 +61,17 @@ { std::vector<BuildVariant> result { - // VS2015 + // VS2017 #ifdef ENABLE_ASM - { 1, U_("win32old"), false, mpt::Windows::Architecture::x86 , PROCSUPPORT_i586 , 0, 0, mpt::Windows::Version::WinXP , mpt::Windows::Version::WinXP , mpt::Wine::Version(1,8,0) }, - { 1, U_("win64old"), false, mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinXP64 , mpt::Windows::Version::WinXP64, mpt::Wine::Version(1,8,0) }, - { 2, U_("win32" ), true , mpt::Windows::Architecture::x86 , PROCSUPPORT_x86_SSE2, 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, - { 2, U_("win64" ), true , mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 1, U_("win32old"), false, mpt::Windows::Architecture::x86 , PROCSUPPORT_x86_SSE2, 2, 0, mpt::Windows::Version::WinXP , mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 1, U_("win64old"), false, mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinXP64 , mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 2, U_("win32" ), true , mpt::Windows::Architecture::x86 , PROCSUPPORT_x86_SSE2, 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win10, mpt::Wine::Version(3,0,0) }, + { 2, U_("win64" ), true , mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win10, mpt::Wine::Version(3,0,0) }, #else - { 1, U_("win32old"), false, mpt::Windows::Architecture::x86 , 0 , 0, 0, mpt::Windows::Version::WinXP , mpt::Windows::Version::WinXP , mpt::Wine::Version(1,8,0) }, - { 1, U_("win64old"), false, mpt::Windows::Architecture::amd64, 0 , 2, 0, mpt::Windows::Version::WinXP64 , mpt::Windows::Version::WinXP64, mpt::Wine::Version(1,8,0) }, - { 2, U_("win32" ), true , mpt::Windows::Architecture::x86 , 0 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, - { 2, U_("win64" ), true , mpt::Windows::Architecture::amd64, 0 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 1, U_("win32old"), false, mpt::Windows::Architecture::x86 , 0 , 0, 0, mpt::Windows::Version::WinXP , mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 1, U_("win64old"), false, mpt::Windows::Architecture::amd64, 0 , 2, 0, mpt::Windows::Version::WinXP64 , mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 2, U_("win32" ), true , mpt::Windows::Architecture::x86 , 0 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win10, mpt::Wine::Version(3,0,0) }, + { 2, U_("win64" ), true , mpt::Windows::Architecture::amd64, 0 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win10, mpt::Wine::Version(3,0,0) }, #endif }; std::stable_sort(result.begin(), result.end(), CompareBuildVariantsByScore); Index: mptrack/ExceptionHandler.cpp =================================================================== --- mptrack/ExceptionHandler.cpp (revision 11181) +++ mptrack/ExceptionHandler.cpp (working copy) @@ -672,7 +672,6 @@ void ExceptionHandler::ConfigureSystemHandler() { -#if (_WIN32_WINNT >= 0x0600) if(delegateToWindowsHandler) { //SetErrorMode(0); @@ -681,15 +680,6 @@ { g_OriginalErrorMode = ::SetErrorMode(::GetErrorMode() | SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); } -#else // _WIN32_WINNT < 0x0600 - if(delegateToWindowsHandler) - { - g_OriginalErrorMode = ::SetErrorMode(0); - } else - { - g_OriginalErrorMode = ::SetErrorMode(::SetErrorMode(0) | SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); - } -#endif // _WIN32_WINNT } Index: mptrack/HTTP.cpp =================================================================== --- mptrack/HTTP.cpp (revision 11181) +++ mptrack/HTTP.cpp (working copy) @@ -447,25 +447,6 @@ } -Request &Request::InsecureTLSDowngradeWindowsXP() -{ - if(mpt::Windows::IsOriginal() && mpt::Windows::Version::Current().IsBefore(mpt::Windows::Version::WinVista)) - { - // TLS 1.0 is not enabled by default until IE7. Since WinInet won't let us override this setting, we cannot assume that HTTPS - // is going to work on older systems. Besides... Windows XP is already enough of a security risk by itself. :P - if(protocol == Protocol::HTTPS) - { - protocol = Protocol::HTTP; - } - if(port == PortHTTPS) - { - port = PortHTTP; - } - } - return *this; -} - - Result SimpleGet(InternetSession &internet, Protocol protocol, const mpt::ustring &host, const mpt::ustring &path) { HTTP::Request request; Index: mptrack/HTTP.h =================================================================== --- mptrack/HTTP.h (revision 11181) +++ mptrack/HTTP.h (working copy) @@ -175,7 +175,6 @@ mpt::const_byte_span data; Request &SetURI(const URI &uri); - Request &InsecureTLSDowngradeWindowsXP(); Result operator()(InternetSession &internet) const; }; Index: mptrack/Image.cpp =================================================================== --- mptrack/Image.cpp (revision 11181) +++ mptrack/Image.cpp (working copy) @@ -61,29 +61,7 @@ static CComPtr<IStream> GetStream(mpt::const_byte_span data) { CComPtr<IStream> stream; -#if (_WIN32_WINNT >= _WIN32_WINNT_VISTA) stream.Attach(SHCreateMemStream(mpt::byte_cast<const unsigned char*>(data.data()), mpt::saturate_cast<UINT>(data.size()))); -#else - HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, data.size()); - if(hGlobal == NULL) - { - throw bad_image(); - } - void * mem = GlobalLock(hGlobal); - if(!mem) - { - hGlobal = GlobalFree(hGlobal); - throw bad_image(); - } - std::memcpy(mem, data.data(), data.size()); - GlobalUnlock(hGlobal); - if(CreateStreamOnHGlobal(hGlobal, TRUE, &stream) != S_OK) - { - hGlobal = GlobalFree(hGlobal); - throw bad_image(); - } - hGlobal = NULL; -#endif if(!stream) { throw bad_image(); Index: mptrack/MPTrackLink.cpp =================================================================== --- mptrack/MPTrackLink.cpp (revision 11181) +++ mptrack/MPTrackLink.cpp (working copy) @@ -29,6 +29,7 @@ #pragma comment(lib, "dmoguids.lib") #pragma comment(lib, "strmiids.lib") +#pragma comment(lib, "avrt.lib") #pragma comment(lib, "dsound.lib") #pragma comment(lib, "winmm.lib") Index: mptrack/UpdateCheck.cpp =================================================================== --- mptrack/UpdateCheck.cpp (revision 11181) +++ mptrack/UpdateCheck.cpp (working copy) @@ -357,7 +357,7 @@ request.method = HTTP::Method::Get; request.flags = HTTP::NoCache; - HTTP::Result resultHTTP = internet(request.InsecureTLSDowngradeWindowsXP()); + HTTP::Result resultHTTP = internet(request); if(settings.sendStatistics) { @@ -376,7 +376,7 @@ std::string jsondata = GetStatisticsDataV3(settings); MPT_LOG(LogInformation, "Update", mpt::ToUnicode(mpt::CharsetUTF8, jsondata)); requestStatistics.data = mpt::byte_cast<mpt::const_byte_span>(mpt::as_span(jsondata)); - internet(requestStatistics.InsecureTLSDowngradeWindowsXP()); + internet(requestStatistics); } // Retrieve HTTP status code. Index: mptrack/wine/Native.cpp =================================================================== --- mptrack/wine/Native.cpp (revision 11181) +++ mptrack/wine/Native.cpp (working copy) @@ -16,6 +16,7 @@ #pragma comment(lib, "strmiids.lib") +#pragma comment(lib, "avrt.lib") #pragma comment(lib, "dsound.lib") #pragma comment(lib, "winmm.lib") Index: sounddev/SoundDeviceDirectSound.cpp =================================================================== --- sounddev/SoundDeviceDirectSound.cpp (revision 11181) +++ sounddev/SoundDeviceDirectSound.cpp (working copy) @@ -332,7 +332,7 @@ } m_dwWritePos = 0xFFFFFFFF; SetWakeupInterval(std::min(m_Settings.UpdateInterval, m_nDSoundBufferSize / (2.0 * m_Settings.GetBytesPerSecond()))); - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); return true; } Index: sounddev/SoundDeviceManager.cpp =================================================================== --- sounddev/SoundDeviceManager.cpp (revision 11181) +++ sounddev/SoundDeviceManager.cpp (working copy) @@ -198,16 +198,6 @@ typePriorities[SoundDevice::TypePORTAUDIO_DS] = 16; typePriorities[U_("Wine-Native-PortAudio-8")] = 9; // ALSA typePriorities[SoundDevice::TypePORTAUDIO_WDMKS] = -1; - } else if(GetSysInfo().WindowsVersion.IsBefore(mpt::Windows::Version::WinVista)) - { // WinXP - typePriorities[SoundDevice::TypeWAVEOUT] = 29; - typePriorities[SoundDevice::TypeASIO] = 28; - typePriorities[U_("RtAudio-WINDOWS_DS")] = 27; - typePriorities[SoundDevice::TypePORTAUDIO_WDMKS] = 26; - typePriorities[SoundDevice::TypePORTAUDIO_WMME] = 19; - typePriorities[SoundDevice::TypeDSOUND] = 17; - typePriorities[SoundDevice::TypePORTAUDIO_DS] = 7; - typePriorities[SoundDevice::TypePORTAUDIO_WASAPI] = -1; } else if(GetSysInfo().WindowsVersion.IsBefore(mpt::Windows::Version::Win7)) { // Vista typePriorities[SoundDevice::TypeWAVEOUT] = 29; Index: sounddev/SoundDevicePortAudio.cpp =================================================================== --- sounddev/SoundDevicePortAudio.cpp (revision 11181) +++ sounddev/SoundDevicePortAudio.cpp (working copy) @@ -127,10 +127,10 @@ framesPerBuffer = paFramesPerBufferUnspecified; // let portaudio choose } else if(m_HostApiType == paMME) { - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); } else if(m_HostApiType == paDirectSound) { - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); } else { m_Flags.NeedsClippedFloat = false; Index: sounddev/SoundDeviceUtilities.cpp =================================================================== --- sounddev/SoundDeviceUtilities.cpp (revision 11181) +++ sounddev/SoundDeviceUtilities.cpp (working copy) @@ -19,6 +19,7 @@ #include <algorithm> #if MPT_OS_WINDOWS +#include <avrt.h> #include <mmsystem.h> #endif // MPT_OS_WINDOWS @@ -131,41 +132,8 @@ } -MPT_REGISTERED_COMPONENT(ComponentAvRt, "AvRt") - -ComponentAvRt::ComponentAvRt() - : ComponentLibrary(ComponentTypeSystem) - , AvSetMmThreadCharacteristics(nullptr) - , AvRevertMmThreadCharacteristics(nullptr) -{ - return; -} - -bool ComponentAvRt::DoInitialize() -{ - if(!mpt::Windows::Version::Current().IsAtLeast(mpt::Windows::Version::WinVista)) - { - return false; - } - AddLibrary("avrt", mpt::LibraryPath::System(P_("avrt"))); - MPT_COMPONENT_BINDWIN("avrt", AvSetMmThreadCharacteristics); - MPT_COMPONENT_BIND("avrt", AvRevertMmThreadCharacteristics); - if(HasBindFailed()) - { - return false; - } - return true; -} - -ComponentAvRt::~ComponentAvRt() -{ - return; -} - - -CPriorityBooster::CPriorityBooster(SoundDevice::SysInfo sysInfo, ComponentHandle<ComponentAvRt> & avrt, bool boostPriority, const mpt::winstring & priorityClass, int priority) +CPriorityBooster::CPriorityBooster(SoundDevice::SysInfo sysInfo, bool boostPriority, const mpt::winstring & priorityClass, int priority) : m_SysInfo(sysInfo) - , m_AvRt(avrt) , m_BoostPriority(boostPriority) , m_Priority(priority) , task_idx(0) @@ -178,16 +146,9 @@ #endif if(m_BoostPriority) { - if(m_SysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) && IsComponentAvailable(m_AvRt)) + if(!priorityClass.empty()) { - if(!priorityClass.empty()) - { - hTask = m_AvRt->AvSetMmThreadCharacteristics(priorityClass.c_str(), &task_idx); - } - } else - { - oldPriority = GetThreadPriority(GetCurrentThread()); - SetThreadPriority(GetCurrentThread(), priority); + hTask = AvSetMmThreadCharacteristics(priorityClass.c_str(), &task_idx); } } } @@ -198,18 +159,12 @@ MPT_TRACE_SCOPE(); if(m_BoostPriority) { - if(m_SysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) && IsComponentAvailable(m_AvRt)) + if(hTask) { - if(hTask) - { - m_AvRt->AvRevertMmThreadCharacteristics(hTask); - } - hTask = NULL; - task_idx = 0; - } else - { - SetThreadPriority(GetCurrentThread(), oldPriority); + AvRevertMmThreadCharacteristics(hTask); } + hTask = NULL; + task_idx = 0; } } @@ -324,7 +279,7 @@ if(!terminate) { - CPriorityBooster priorityBooster(m_SoundDevice.GetSysInfo(), m_AvRt, m_SoundDevice.m_Settings.BoostThreadPriority, m_MMCSSClass, m_SoundDevice.m_AppInfo.BoostedThreadPriorityXP); + CPriorityBooster priorityBooster(m_SoundDevice.GetSysInfo(), m_SoundDevice.m_Settings.BoostThreadPriority, m_MMCSSClass, m_SoundDevice.m_AppInfo.BoostedThreadPriorityXP); CPeriodicWaker periodicWaker(*this, m_WakeupInterval); m_SoundDevice.StartFromSoundThread(); Index: sounddev/SoundDeviceUtilities.h =================================================================== --- sounddev/SoundDeviceUtilities.h (revision 11181) +++ sounddev/SoundDeviceUtilities.h (working copy) @@ -16,7 +16,6 @@ #include "SoundDeviceBase.h" #include "../common/misc_util.h" -#include "../common/ComponentManager.h" #if MPT_OS_WINDOWS #include <mmreg.h> @@ -48,27 +47,10 @@ class CSoundDeviceWithThread; -class ComponentAvRt - : public ComponentLibrary -{ - MPT_DECLARE_COMPONENT_MEMBERS -public: - typedef HANDLE (WINAPI *pAvSetMmThreadCharacteristics)(LPCTSTR, LPDWORD); - typedef BOOL (WINAPI *pAvRevertMmThreadCharacteristics)(HANDLE); - pAvSetMmThreadCharacteristics AvSetMmThreadCharacteristics; - pAvRevertMmThreadCharacteristics AvRevertMmThreadCharacteristics; -public: - ComponentAvRt(); - virtual ~ComponentAvRt(); - bool DoInitialize() override; -}; - - class CPriorityBooster { private: SoundDevice::SysInfo m_SysInfo; - ComponentHandle<ComponentAvRt> & m_AvRt; bool m_BoostPriority; int m_Priority; DWORD task_idx; @@ -75,7 +57,7 @@ HANDLE hTask; int oldPriority; public: - CPriorityBooster(SoundDevice::SysInfo sysInfo, ComponentHandle<ComponentAvRt> & avrt, bool boostPriority, const mpt::winstring & priorityClass, int priority); + CPriorityBooster(SoundDevice::SysInfo sysInfo, bool boostPriority, const mpt::winstring & priorityClass, int priority); ~CPriorityBooster(); }; @@ -85,7 +67,6 @@ friend class CPeriodicWaker; private: CSoundDeviceWithThread & m_SoundDevice; - ComponentHandle<ComponentAvRt> m_AvRt; mpt::winstring m_MMCSSClass; double m_WakeupInterval; HANDLE m_hAudioWakeUp; Index: sounddev/SoundDeviceWaveout.cpp =================================================================== --- sounddev/SoundDeviceWaveout.cpp (revision 11181) +++ sounddev/SoundDeviceWaveout.cpp (working copy) @@ -207,7 +207,7 @@ } SetWakeupEvent(m_ThreadWakeupEvent); SetWakeupInterval(m_nWaveBufferSize * 1.0 / m_Settings.GetBytesPerSecond()); - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); return true; } remove-winxp-v3.patch (24,389 bytes)
Index: common/BuildSettings.h =================================================================== --- common/BuildSettings.h (revision 11772) +++ common/BuildSettings.h (working copy) @@ -20,36 +20,10 @@ #if MPT_OS_WINDOWS -#if defined(MPT_BUILD_MSVC) - -#if defined(MPT_BUILD_TARGET_XP) - -#if defined(_M_X64) #ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0502 // _WIN32_WINNT_WS03 -#endif -#else // !_M_X64 -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 // _WIN32_WINNT_WINXP -#endif -#endif // _M_X64 - -#else // MPT_BUILD_TARGET - -#ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0601 // _WIN32_WINNT_WIN7 #endif -#endif // MPT_BUILD_TARGET - -#else // !MPT_BUILD_MSVC - -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 // _WIN32_WINNT_WINXP -#endif - -#endif // MPT_BUILD_MSVC - #ifndef WINVER #define WINVER _WIN32_WINNT #endif @@ -121,10 +95,8 @@ //#define MPT_WITH_ICONV //#define MPT_WITH_LTDL #if MPT_OS_WINDOWS -#if (_WIN32_WINNT >= 0x0601) #define MPT_WITH_MEDIAFOUNDATION #endif -#endif //#define MPT_WITH_MINIMP3 //#define MPT_WITH_MINIZ #define MPT_WITH_MPG123 Index: common/mptLibrary.cpp =================================================================== --- common/mptLibrary.cpp (revision 11772) +++ common/mptLibrary.cpp (working copy) @@ -100,7 +100,7 @@ if(WindowsVersion.IsAtLeast(mpt::Windows::Version::Win8)) { hasKB2533623 = true; - } else if(WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + } else { HMODULE hKernel32DLL = LoadLibraryW(L"kernel32.dll"); if(hKernel32DLL) Index: mptrack/AdvancedConfigDlg.cpp =================================================================== --- mptrack/AdvancedConfigDlg.cpp (revision 11772) +++ mptrack/AdvancedConfigDlg.cpp (working copy) @@ -170,11 +170,7 @@ if(gi == m_groups.end()) { LVGROUP group; - #if _WIN32_WINNT >= 0x0600 group.cbSize = LVGROUP_V5_SIZE; - #else - group.cbSize = sizeof(group); - #endif group.mask = LVGF_HEADER | LVGF_GROUPID; #if MPT_USTRING_MODE_WIDE group.pszHeader = const_cast<wchar_t *>(section.c_str()); Index: mptrack/BuildVariants.cpp =================================================================== --- mptrack/BuildVariants.cpp (revision 11772) +++ mptrack/BuildVariants.cpp (working copy) @@ -62,10 +62,10 @@ std::vector<BuildVariant> result { // VS2017 - { 1, U_("win32old"), false, mpt::Windows::Architecture::x86 , PROCSUPPORT_i586 , 0, 0, mpt::Windows::Version::WinXP , mpt::Windows::Version::WinXP , mpt::Wine::Version(1,8,0) }, - { 1, U_("win64old"), false, mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinXP64 , mpt::Windows::Version::WinXP64, mpt::Wine::Version(1,8,0) }, - { 2, U_("win32" ), true , mpt::Windows::Architecture::x86 , PROCSUPPORT_x86_SSE2, 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, - { 2, U_("win64" ), true , mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 1, U_("win32old"), false, mpt::Windows::Architecture::x86 , PROCSUPPORT_x86_SSE2, 2, 0, mpt::Windows::Version::WinXP , mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 1, U_("win64old"), false, mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinXP64 , mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 2, U_("win32" ), true , mpt::Windows::Architecture::x86 , PROCSUPPORT_x86_SSE2, 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win10, mpt::Wine::Version(3,0,0) }, + { 2, U_("win64" ), true , mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win10, mpt::Wine::Version(3,0,0) }, }; std::stable_sort(result.begin(), result.end(), CompareBuildVariantsByScore); return result; Index: mptrack/ExceptionHandler.cpp =================================================================== --- mptrack/ExceptionHandler.cpp (revision 11772) +++ mptrack/ExceptionHandler.cpp (working copy) @@ -669,7 +669,6 @@ void ExceptionHandler::ConfigureSystemHandler() { -#if (_WIN32_WINNT >= 0x0600) if(delegateToWindowsHandler) { //SetErrorMode(0); @@ -678,15 +677,6 @@ { g_OriginalErrorMode = ::SetErrorMode(::GetErrorMode() | SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); } -#else // _WIN32_WINNT < 0x0600 - if(delegateToWindowsHandler) - { - g_OriginalErrorMode = ::SetErrorMode(0); - } else - { - g_OriginalErrorMode = ::SetErrorMode(::SetErrorMode(0) | SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); - } -#endif // _WIN32_WINNT } Index: mptrack/HTTP.cpp =================================================================== --- mptrack/HTTP.cpp (revision 11772) +++ mptrack/HTTP.cpp (working copy) @@ -447,25 +447,6 @@ } -Request &Request::InsecureTLSDowngradeWindowsXP() -{ - if(mpt::Windows::IsOriginal() && mpt::Windows::Version::Current().IsBefore(mpt::Windows::Version::WinVista)) - { - // TLS 1.0 is not enabled by default until IE7. Since WinInet won't let us override this setting, we cannot assume that HTTPS - // is going to work on older systems. Besides... Windows XP is already enough of a security risk by itself. :P - if(protocol == Protocol::HTTPS) - { - protocol = Protocol::HTTP; - } - if(port == Port::HTTPS) - { - port = Port::HTTP; - } - } - return *this; -} - - Result SimpleGet(InternetSession &internet, Protocol protocol, const mpt::ustring &host, const mpt::ustring &path) { HTTP::Request request; Index: mptrack/HTTP.h =================================================================== --- mptrack/HTTP.h (revision 11772) +++ mptrack/HTTP.h (working copy) @@ -177,7 +177,6 @@ mpt::const_byte_span data; Request &SetURI(const URI &uri); - Request &InsecureTLSDowngradeWindowsXP(); Result operator()(InternetSession &internet) const; }; Index: mptrack/Image.cpp =================================================================== --- mptrack/Image.cpp (revision 11772) +++ mptrack/Image.cpp (working copy) @@ -61,29 +61,7 @@ static CComPtr<IStream> GetStream(mpt::const_byte_span data) { CComPtr<IStream> stream; -#if (_WIN32_WINNT >= _WIN32_WINNT_VISTA) stream.Attach(SHCreateMemStream(mpt::byte_cast<const unsigned char*>(data.data()), mpt::saturate_cast<UINT>(data.size()))); -#else - HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, data.size()); - if(hGlobal == NULL) - { - throw bad_image(); - } - void * mem = GlobalLock(hGlobal); - if(!mem) - { - hGlobal = GlobalFree(hGlobal); - throw bad_image(); - } - std::memcpy(mem, data.data(), data.size()); - GlobalUnlock(hGlobal); - if(CreateStreamOnHGlobal(hGlobal, TRUE, &stream) != S_OK) - { - hGlobal = GlobalFree(hGlobal); - throw bad_image(); - } - hGlobal = NULL; -#endif if(!stream) { throw bad_image(); Index: mptrack/MPTrackLink.cpp =================================================================== --- mptrack/MPTrackLink.cpp (revision 11772) +++ mptrack/MPTrackLink.cpp (working copy) @@ -16,9 +16,7 @@ #if defined(MPT_BUILD_MSVC) #if MPT_COMPILER_MSVC || MPT_COMPILER_CLANG -#if !defined(MPT_BUILD_TARGET_XP) #pragma comment(lib, "delayimp.lib") -#endif // !MPT_BUILD_TARGET_XP #pragma comment(lib, "version.lib") #pragma comment(lib, "rpcrt4.lib") @@ -32,6 +30,7 @@ #pragma comment(lib, "dmoguids.lib") #pragma comment(lib, "strmiids.lib") +#pragma comment(lib, "avrt.lib") #pragma comment(lib, "dsound.lib") #pragma comment(lib, "winmm.lib") Index: mptrack/UpdateCheck.cpp =================================================================== --- mptrack/UpdateCheck.cpp (revision 11772) +++ mptrack/UpdateCheck.cpp (working copy) @@ -358,7 +358,7 @@ request.method = HTTP::Method::Get; request.flags = HTTP::NoCache; - HTTP::Result resultHTTP = internet(request.InsecureTLSDowngradeWindowsXP()); + HTTP::Result resultHTTP = internet(request); if(settings.sendStatistics) { @@ -377,7 +377,7 @@ std::string jsondata = GetStatisticsDataV3(settings); MPT_LOG(LogInformation, "Update", mpt::ToUnicode(mpt::CharsetUTF8, jsondata)); requestStatistics.data = mpt::byte_cast<mpt::const_byte_span>(mpt::as_span(jsondata)); - internet(requestStatistics.InsecureTLSDowngradeWindowsXP()); + internet(requestStatistics); } // Retrieve HTTP status code. Index: mptrack/wine/Native.cpp =================================================================== --- mptrack/wine/Native.cpp (revision 11772) +++ mptrack/wine/Native.cpp (working copy) @@ -16,6 +16,7 @@ #pragma comment(lib, "strmiids.lib") +#pragma comment(lib, "avrt.lib") #pragma comment(lib, "dsound.lib") #pragma comment(lib, "winmm.lib") Index: sounddev/SoundDeviceDirectSound.cpp =================================================================== --- sounddev/SoundDeviceDirectSound.cpp (revision 11772) +++ sounddev/SoundDeviceDirectSound.cpp (working copy) @@ -144,7 +144,7 @@ caps.HasNamedInputSources = false; caps.CanDriverPanel = false; caps.ExclusiveModeDescription = U_("Use primary buffer"); - caps.DefaultSettings.sampleFormat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) ? SampleFormatFloat32 : SampleFormatInt16; + caps.DefaultSettings.sampleFormat = GetSysInfo().IsOriginal() ? SampleFormatFloat32 : SampleFormatInt16; IDirectSound *dummy = nullptr; IDirectSound *ds = nullptr; if(m_piDS) @@ -223,9 +223,8 @@ } } } - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { - // Vista caps.supportedSampleFormats = { SampleFormatFloat32 }; caps.supportedExclusiveModeSampleFormats = { SampleFormatFloat32 }; } else if(!(dscaps.dwFlags & DSCAPS_EMULDRIVER)) @@ -357,7 +356,7 @@ } m_dwWritePos = 0xFFFFFFFF; SetWakeupInterval(std::min(m_Settings.UpdateInterval, m_nDSoundBufferSize / (2.0 * m_Settings.GetBytesPerSecond()))); - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); return true; } Index: sounddev/SoundDeviceManager.cpp =================================================================== --- sounddev/SoundDeviceManager.cpp (revision 11772) +++ sounddev/SoundDeviceManager.cpp (working copy) @@ -244,26 +244,6 @@ typePriorities[SoundDevice::TypePORTAUDIO_DS] = 16; typePriorities[U_("Wine-Native-PortAudio-8")] = 9; // ALSA typePriorities[SoundDevice::TypePORTAUDIO_WDMKS] = -1; - } else if(GetSysInfo().WindowsVersion.IsBefore(mpt::Windows::Version::WinVista)) - { // WinXP - typePriorities[SoundDevice::TypeWAVEOUT] = 29; - typePriorities[SoundDevice::TypeASIO] = 28; - typePriorities[U_("RtAudio-WINDOWS_DS")] = 27; - typePriorities[SoundDevice::TypePORTAUDIO_WDMKS] = 26; - typePriorities[SoundDevice::TypePORTAUDIO_WMME] = 19; - typePriorities[SoundDevice::TypeDSOUND] = 17; - typePriorities[SoundDevice::TypePORTAUDIO_DS] = 7; - typePriorities[SoundDevice::TypePORTAUDIO_WASAPI] = -1; - } else if(GetSysInfo().WindowsVersion.IsBefore(mpt::Windows::Version::Win7)) - { // Vista - typePriorities[SoundDevice::TypeWAVEOUT] = 29; - typePriorities[SoundDevice::TypePORTAUDIO_WASAPI] = 28; - typePriorities[SoundDevice::TypeASIO] = 27; - typePriorities[SoundDevice::TypePORTAUDIO_WDMKS] = 26; - typePriorities[SoundDevice::TypePORTAUDIO_WMME] = 19; - typePriorities[U_("RtAudio-WINDOWS_DS")] = -1; - typePriorities[SoundDevice::TypeDSOUND] = -2; - typePriorities[SoundDevice::TypePORTAUDIO_DS] = -3; } else { // >=Win7 typePriorities[SoundDevice::TypePORTAUDIO_WASAPI] = 29; Index: sounddev/SoundDevicePortAudio.cpp =================================================================== --- sounddev/SoundDevicePortAudio.cpp (revision 11772) +++ sounddev/SoundDevicePortAudio.cpp (working copy) @@ -127,10 +127,10 @@ framesPerBuffer = paFramesPerBufferUnspecified; // let portaudio choose } else if(m_HostApiType == paMME) { - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); } else if(m_HostApiType == paDirectSound) { - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); } else { m_Flags.NeedsClippedFloat = false; @@ -370,7 +370,7 @@ caps.DefaultSettings.sampleFormat = SampleFormatInt32; } else if(m_HostApiType == paDirectSound) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.DefaultSettings.sampleFormat = SampleFormatFloat32; } else @@ -379,11 +379,8 @@ } } else if(m_HostApiType == paMME) { - if(GetSysInfo().IsWine) + if(GetSysInfo().IsOriginal()) { - caps.DefaultSettings.sampleFormat = SampleFormatInt16; - } else if(GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) - { caps.DefaultSettings.sampleFormat = SampleFormatFloat32; } else { @@ -395,13 +392,13 @@ } if(m_HostApiType == paDirectSound) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.HasInternalDither = false; } } else if(m_HostApiType == paMME) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.HasInternalDither = false; } @@ -445,13 +442,13 @@ } if(m_HostApiType == paDirectSound) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.supportedSampleFormats = { SampleFormatFloat32 }; } } else if(m_HostApiType == paMME) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.supportedSampleFormats = { SampleFormatFloat32 }; } @@ -567,7 +564,6 @@ { return false; } - bool hasVista = GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista); mpt::PathString controlEXE; TCHAR systemDir[MAX_PATH]; MemsetZero(systemDir); @@ -577,7 +573,7 @@ controlEXE += P_("\\"); } controlEXE += P_("control.exe"); - return (reinterpret_cast<INT_PTR>(ShellExecute(NULL, TEXT("open"), controlEXE.AsNative().c_str(), (hasVista ? TEXT("/name Microsoft.Sound") : TEXT("mmsys.cpl")), NULL, SW_SHOW)) >= 32); + return (reinterpret_cast<INT_PTR>(ShellExecute(NULL, TEXT("open"), controlEXE.AsNative().c_str(), TEXT("/name Microsoft.Sound"), NULL, SW_SHOW)) >= 32); #else // !MPT_OS_WINDOWS return false; #endif // MPT_OS_WINDOWS @@ -650,6 +646,7 @@ std::vector<SoundDevice::Info> CPortaudioDevice::EnumerateDevices(SoundDevice::SysInfo sysInfo) { + MPT_UNREFERENCED_PARAMETER(sysInfo); std::vector<SoundDevice::Info> devices; for(PaDeviceIndex dev = 0; dev < Pa_GetDeviceCount(); ++dev) { @@ -704,13 +701,7 @@ result.apiName = U_("WASAPI"); break; case paWDMKS: - if(sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) - { - result.apiName = U_("WaveRT"); - } else - { - result.apiName = U_("WDM-KS"); - } + result.apiName = U_("WaveRT"); break; default: result.apiName = mpt::ToUnicode(mpt::CharsetUTF8, Pa_GetHostApiInfo(Pa_GetDeviceInfo(dev)->hostApi)->name); Index: sounddev/SoundDeviceRtAudio.cpp =================================================================== --- sounddev/SoundDeviceRtAudio.cpp (revision 11772) +++ sounddev/SoundDeviceRtAudio.cpp (working copy) @@ -177,7 +177,7 @@ m_Flags.NeedsClippedFloat = true; } else if(m_RtAudio->getCurrentApi() == RtAudio::Api::WINDOWS_DS) { - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); } m_RtAudio->openStream((m_OutputStreamParameters.nChannels > 0) ? &m_OutputStreamParameters : nullptr, (m_InputStreamParameters.nChannels > 0) ? &m_InputStreamParameters : nullptr, SampleFormatToRtAudioFormat(m_Settings.sampleFormat), m_Settings.Samplerate, &m_FramesPerChunk, &RtAudioCallback, this, &m_StreamOptions, nullptr); } catch (const RtAudioError &e) Index: sounddev/SoundDeviceUtilities.cpp =================================================================== --- sounddev/SoundDeviceUtilities.cpp (revision 11772) +++ sounddev/SoundDeviceUtilities.cpp (working copy) @@ -19,6 +19,7 @@ #include <algorithm> #if MPT_OS_WINDOWS +#include <avrt.h> #include <mmsystem.h> #endif // MPT_OS_WINDOWS @@ -131,41 +132,8 @@ } -MPT_REGISTERED_COMPONENT(ComponentAvRt, "AvRt") - -ComponentAvRt::ComponentAvRt() - : ComponentLibrary(ComponentTypeSystem) - , AvSetMmThreadCharacteristics(nullptr) - , AvRevertMmThreadCharacteristics(nullptr) -{ - return; -} - -bool ComponentAvRt::DoInitialize() -{ - if(!mpt::Windows::Version::Current().IsAtLeast(mpt::Windows::Version::WinVista)) - { - return false; - } - AddLibrary("avrt", mpt::LibraryPath::System(P_("avrt"))); - MPT_COMPONENT_BINDWIN("avrt", AvSetMmThreadCharacteristics); - MPT_COMPONENT_BIND("avrt", AvRevertMmThreadCharacteristics); - if(HasBindFailed()) - { - return false; - } - return true; -} - -ComponentAvRt::~ComponentAvRt() -{ - return; -} - - -CPriorityBooster::CPriorityBooster(SoundDevice::SysInfo sysInfo, ComponentHandle<ComponentAvRt> & avrt, bool boostPriority, const mpt::winstring & priorityClass, int priority) +CPriorityBooster::CPriorityBooster(SoundDevice::SysInfo sysInfo, bool boostPriority, const mpt::winstring & priorityClass, int priority) : m_SysInfo(sysInfo) - , m_AvRt(avrt) , m_BoostPriority(boostPriority) , m_Priority(priority) , task_idx(0) @@ -178,16 +146,9 @@ #endif if(m_BoostPriority) { - if(m_SysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) && IsComponentAvailable(m_AvRt)) + if(!priorityClass.empty()) { - if(!priorityClass.empty()) - { - hTask = m_AvRt->AvSetMmThreadCharacteristics(priorityClass.c_str(), &task_idx); - } - } else - { - oldPriority = GetThreadPriority(GetCurrentThread()); - SetThreadPriority(GetCurrentThread(), m_Priority); + hTask = AvSetMmThreadCharacteristics(priorityClass.c_str(), &task_idx); } } } @@ -198,18 +159,12 @@ MPT_TRACE_SCOPE(); if(m_BoostPriority) { - if(m_SysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) && IsComponentAvailable(m_AvRt)) + if(hTask) { - if(hTask) - { - m_AvRt->AvRevertMmThreadCharacteristics(hTask); - } - hTask = NULL; - task_idx = 0; - } else - { - SetThreadPriority(GetCurrentThread(), oldPriority); + AvRevertMmThreadCharacteristics(hTask); } + hTask = NULL; + task_idx = 0; } } @@ -322,7 +277,7 @@ if(!terminate) { - CPriorityBooster priorityBooster(m_SoundDevice.GetSysInfo(), m_AvRt, m_SoundDevice.m_Settings.BoostThreadPriority, m_MMCSSClass, m_SoundDevice.m_AppInfo.BoostedThreadPriorityXP); + CPriorityBooster priorityBooster(m_SoundDevice.GetSysInfo(), m_SoundDevice.m_Settings.BoostThreadPriority, m_MMCSSClass, m_SoundDevice.m_AppInfo.BoostedThreadPriorityXP); CPeriodicWaker periodicWaker(m_WakeupInterval); m_SoundDevice.StartFromSoundThread(); Index: sounddev/SoundDeviceUtilities.h =================================================================== --- sounddev/SoundDeviceUtilities.h (revision 11772) +++ sounddev/SoundDeviceUtilities.h (working copy) @@ -16,7 +16,6 @@ #include "SoundDeviceBase.h" #include "../common/misc_util.h" -#include "../common/ComponentManager.h" #if MPT_OS_WINDOWS #include <mmreg.h> @@ -48,27 +47,10 @@ class CSoundDeviceWithThread; -class ComponentAvRt - : public ComponentLibrary -{ - MPT_DECLARE_COMPONENT_MEMBERS -public: - typedef HANDLE (WINAPI *pAvSetMmThreadCharacteristics)(LPCTSTR, LPDWORD); - typedef BOOL (WINAPI *pAvRevertMmThreadCharacteristics)(HANDLE); - pAvSetMmThreadCharacteristics AvSetMmThreadCharacteristics; - pAvRevertMmThreadCharacteristics AvRevertMmThreadCharacteristics; -public: - ComponentAvRt(); - virtual ~ComponentAvRt(); - bool DoInitialize() override; -}; - - class CPriorityBooster { private: SoundDevice::SysInfo m_SysInfo; - ComponentHandle<ComponentAvRt> & m_AvRt; bool m_BoostPriority; int m_Priority; DWORD task_idx; @@ -75,7 +57,7 @@ HANDLE hTask; int oldPriority; public: - CPriorityBooster(SoundDevice::SysInfo sysInfo, ComponentHandle<ComponentAvRt> & avrt, bool boostPriority, const mpt::winstring & priorityClass, int priority); + CPriorityBooster(SoundDevice::SysInfo sysInfo, bool boostPriority, const mpt::winstring & priorityClass, int priority); ~CPriorityBooster(); }; @@ -85,7 +67,6 @@ friend class CPeriodicWaker; private: CSoundDeviceWithThread & m_SoundDevice; - ComponentHandle<ComponentAvRt> m_AvRt; mpt::winstring m_MMCSSClass; double m_WakeupInterval; HANDLE m_hAudioWakeUp; Index: sounddev/SoundDeviceWaveout.cpp =================================================================== --- sounddev/SoundDeviceWaveout.cpp (revision 11772) +++ sounddev/SoundDeviceWaveout.cpp (working copy) @@ -93,11 +93,8 @@ caps.CanDriverPanel = false; caps.HasInternalDither = false; caps.ExclusiveModeDescription = U_("Use direct mode"); - if(GetSysInfo().IsWine) + if(GetSysInfo().IsOriginal()) { - caps.DefaultSettings.sampleFormat = SampleFormatInt16; - } else if(GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) - { caps.DefaultSettings.sampleFormat = SampleFormatFloat32; } else { @@ -111,7 +108,7 @@ { MPT_TRACE_SCOPE(); SoundDevice::DynamicCaps caps; - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.supportedSampleFormats = { SampleFormatFloat32 }; } @@ -230,7 +227,7 @@ } SetWakeupEvent(m_ThreadWakeupEvent); SetWakeupInterval(m_nWaveBufferSize * 1.0 / m_Settings.GetBytesPerSecond()); - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); return true; } @@ -368,11 +365,7 @@ ULONG nBytesWritten = 0; while((oldBuffersPending < m_nPreparedHeaders) && !m_Failed) { -#if (_WIN32_WINNT >= 0x0600) DWORD oldFlags = InterlockedOr(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwFlags), 0); -#else - DWORD oldFlags = _InterlockedOr(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwFlags), 0); -#endif uint32 driverBugs = 0; if(oldFlags & WHDR_INQUEUE) { @@ -407,11 +400,7 @@ SourceLockedAudioReadPrepare(m_nWaveBufferSize / bytesPerFrame, nLatency / bytesPerFrame); SourceLockedAudioRead(m_WaveBuffers[m_nWriteBuffer].lpData, nullptr, m_nWaveBufferSize / bytesPerFrame); nBytesWritten += m_nWaveBufferSize; -#if (_WIN32_WINNT >= 0x0600) InterlockedAnd(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwFlags), ~static_cast<DWORD>(WHDR_INQUEUE|WHDR_DONE)); -#else - _InterlockedAnd(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwFlags), ~static_cast<DWORD>(WHDR_INQUEUE|WHDR_DONE)); -#endif InterlockedExchange(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwBufferLength), m_nWaveBufferSize); InterlockedIncrement(&m_nBuffersPending); oldBuffersPending++; // increment separately to avoid looping without leaving at all when rendering takes more than 100% CPU @@ -518,11 +507,7 @@ void CWaveDevice::HandleWaveoutDone(WAVEHDR *hdr) { MPT_TRACE_SCOPE(); -#if (_WIN32_WINNT >= 0x0600) DWORD flags = InterlockedOr(interlocked_access(&hdr->dwFlags), 0); -#else - DWORD flags = _InterlockedOr(interlocked_access(&hdr->dwFlags), 0); -#endif std::size_t hdrIndex = hdr - &(m_WaveBuffers[0]); uint32 driverBugs = 0; if(hdrIndex != m_nDoneBuffer) remove-winxp-v4.patch (30,860 bytes)
Index: common/BuildSettings.h =================================================================== --- common/BuildSettings.h (revision 11890) +++ common/BuildSettings.h (working copy) @@ -20,36 +20,10 @@ #if MPT_OS_WINDOWS -#if defined(MPT_BUILD_MSVC) - -#if defined(MPT_BUILD_TARGET_XP) - -#if defined(_M_X64) #ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0502 // _WIN32_WINNT_WS03 -#endif -#else // !_M_X64 -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 // _WIN32_WINNT_WINXP -#endif -#endif // _M_X64 - -#else // MPT_BUILD_TARGET - -#ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0601 // _WIN32_WINNT_WIN7 #endif -#endif // MPT_BUILD_TARGET - -#else // !MPT_BUILD_MSVC - -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 // _WIN32_WINNT_WINXP -#endif - -#endif // MPT_BUILD_MSVC - #ifndef WINVER #define WINVER _WIN32_WINNT #endif @@ -121,10 +95,8 @@ //#define MPT_WITH_ICONV //#define MPT_WITH_LTDL #if MPT_OS_WINDOWS -#if (_WIN32_WINNT >= 0x0601) #define MPT_WITH_MEDIAFOUNDATION #endif -#endif //#define MPT_WITH_MINIMP3 //#define MPT_WITH_MINIZ #define MPT_WITH_MPG123 Index: common/mptLibrary.cpp =================================================================== --- common/mptLibrary.cpp (revision 11890) +++ common/mptLibrary.cpp (working copy) @@ -100,7 +100,7 @@ if(WindowsVersion.IsAtLeast(mpt::Windows::Version::Win8)) { hasKB2533623 = true; - } else if(WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + } else { HMODULE hKernel32DLL = LoadLibraryW(L"kernel32.dll"); if(hKernel32DLL) Index: mptrack/AdvancedConfigDlg.cpp =================================================================== --- mptrack/AdvancedConfigDlg.cpp (revision 11890) +++ mptrack/AdvancedConfigDlg.cpp (working copy) @@ -170,11 +170,7 @@ if(gi == m_groups.end()) { LVGROUP group; - #if _WIN32_WINNT >= 0x0600 group.cbSize = LVGROUP_V5_SIZE; - #else - group.cbSize = sizeof(group); - #endif group.mask = LVGF_HEADER | LVGF_GROUPID; #if MPT_USTRING_MODE_WIDE group.pszHeader = const_cast<wchar_t *>(section.c_str()); Index: mptrack/BuildVariants.cpp =================================================================== --- mptrack/BuildVariants.cpp (revision 11890) +++ mptrack/BuildVariants.cpp (working copy) @@ -62,10 +62,10 @@ std::vector<BuildVariant> result { // VS2017 - { 1, U_("win32old"), false, mpt::Windows::Architecture::x86 , PROCSUPPORT_i586 , 0, 0, mpt::Windows::Version::WinXP , mpt::Windows::Version::WinXP , mpt::Wine::Version(1,8,0) }, - { 1, U_("win64old"), false, mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinXP64 , mpt::Windows::Version::WinXP64, mpt::Wine::Version(1,8,0) }, - { 2, U_("win32" ), true , mpt::Windows::Architecture::x86 , PROCSUPPORT_x86_SSE2, 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, - { 2, U_("win64" ), true , mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 1, U_("win32old"), false, mpt::Windows::Architecture::x86 , PROCSUPPORT_x86_SSE2, 2, 0, mpt::Windows::Version::WinXP , mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 1, U_("win64old"), false, mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinXP64 , mpt::Windows::Version::Win7 , mpt::Wine::Version(1,8,0) }, + { 2, U_("win32" ), true , mpt::Windows::Architecture::x86 , PROCSUPPORT_x86_SSE2, 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win10, mpt::Wine::Version(3,0,0) }, + { 2, U_("win64" ), true , mpt::Windows::Architecture::amd64, PROCSUPPORT_AMD64 , 2, 0, mpt::Windows::Version::WinVista, mpt::Windows::Version::Win10, mpt::Wine::Version(3,0,0) }, }; std::stable_sort(result.begin(), result.end(), CompareBuildVariantsByScore); return result; Index: mptrack/ExceptionHandler.cpp =================================================================== --- mptrack/ExceptionHandler.cpp (revision 11890) +++ mptrack/ExceptionHandler.cpp (working copy) @@ -669,7 +669,6 @@ void ExceptionHandler::ConfigureSystemHandler() { -#if (_WIN32_WINNT >= 0x0600) if(delegateToWindowsHandler) { //SetErrorMode(0); @@ -678,15 +677,6 @@ { g_OriginalErrorMode = ::SetErrorMode(::GetErrorMode() | SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); } -#else // _WIN32_WINNT < 0x0600 - if(delegateToWindowsHandler) - { - g_OriginalErrorMode = ::SetErrorMode(0); - } else - { - g_OriginalErrorMode = ::SetErrorMode(::SetErrorMode(0) | SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); - } -#endif // _WIN32_WINNT } Index: mptrack/HTTP.cpp =================================================================== --- mptrack/HTTP.cpp (revision 11890) +++ mptrack/HTTP.cpp (working copy) @@ -447,25 +447,6 @@ } -Request &Request::InsecureTLSDowngradeWindowsXP() -{ - if(mpt::Windows::IsOriginal() && mpt::Windows::Version::Current().IsBefore(mpt::Windows::Version::WinVista)) - { - // TLS 1.0 is not enabled by default until IE7. Since WinInet won't let us override this setting, we cannot assume that HTTPS - // is going to work on older systems. Besides... Windows XP is already enough of a security risk by itself. :P - if(protocol == Protocol::HTTPS) - { - protocol = Protocol::HTTP; - } - if(port == Port::HTTPS) - { - port = Port::HTTP; - } - } - return *this; -} - - Result SimpleGet(InternetSession &internet, Protocol protocol, const mpt::ustring &host, const mpt::ustring &path) { HTTP::Request request; Index: mptrack/HTTP.h =================================================================== --- mptrack/HTTP.h (revision 11890) +++ mptrack/HTTP.h (working copy) @@ -177,7 +177,6 @@ mpt::const_byte_span data; Request &SetURI(const URI &uri); - Request &InsecureTLSDowngradeWindowsXP(); Result operator()(InternetSession &internet) const; }; Index: mptrack/Image.cpp =================================================================== --- mptrack/Image.cpp (revision 11890) +++ mptrack/Image.cpp (working copy) @@ -61,29 +61,7 @@ static CComPtr<IStream> GetStream(mpt::const_byte_span data) { CComPtr<IStream> stream; -#if (_WIN32_WINNT >= _WIN32_WINNT_VISTA) stream.Attach(SHCreateMemStream(mpt::byte_cast<const unsigned char*>(data.data()), mpt::saturate_cast<UINT>(data.size()))); -#else - HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, data.size()); - if(hGlobal == NULL) - { - throw bad_image(); - } - void * mem = GlobalLock(hGlobal); - if(!mem) - { - hGlobal = GlobalFree(hGlobal); - throw bad_image(); - } - std::memcpy(mem, data.data(), data.size()); - GlobalUnlock(hGlobal); - if(CreateStreamOnHGlobal(hGlobal, TRUE, &stream) != S_OK) - { - hGlobal = GlobalFree(hGlobal); - throw bad_image(); - } - hGlobal = NULL; -#endif if(!stream) { throw bad_image(); Index: mptrack/MPTrackLink.cpp =================================================================== --- mptrack/MPTrackLink.cpp (revision 11890) +++ mptrack/MPTrackLink.cpp (working copy) @@ -16,9 +16,7 @@ #if defined(MPT_BUILD_MSVC) #if MPT_COMPILER_MSVC || MPT_COMPILER_CLANG -#if !defined(MPT_BUILD_TARGET_XP) #pragma comment(lib, "delayimp.lib") -#endif // !MPT_BUILD_TARGET_XP #pragma comment(lib, "version.lib") #pragma comment(lib, "rpcrt4.lib") @@ -32,6 +30,7 @@ #pragma comment(lib, "dmoguids.lib") #pragma comment(lib, "strmiids.lib") +#pragma comment(lib, "avrt.lib") #pragma comment(lib, "dsound.lib") #pragma comment(lib, "winmm.lib") Index: mptrack/UpdateCheck.cpp =================================================================== --- mptrack/UpdateCheck.cpp (revision 11890) +++ mptrack/UpdateCheck.cpp (working copy) @@ -358,7 +358,7 @@ request.method = HTTP::Method::Get; request.flags = HTTP::NoCache; - HTTP::Result resultHTTP = internet(request.InsecureTLSDowngradeWindowsXP()); + HTTP::Result resultHTTP = internet(request); if(settings.sendStatistics) { @@ -377,7 +377,7 @@ std::string jsondata = GetStatisticsDataV3(settings); MPT_LOG(LogInformation, "Update", mpt::ToUnicode(mpt::CharsetUTF8, jsondata)); requestStatistics.data = mpt::byte_cast<mpt::const_byte_span>(mpt::as_span(jsondata)); - internet(requestStatistics.InsecureTLSDowngradeWindowsXP()); + internet(requestStatistics); } // Retrieve HTTP status code. Index: mptrack/wine/Native.cpp =================================================================== --- mptrack/wine/Native.cpp (revision 11890) +++ mptrack/wine/Native.cpp (working copy) @@ -16,6 +16,7 @@ #pragma comment(lib, "strmiids.lib") +#pragma comment(lib, "avrt.lib") #pragma comment(lib, "dsound.lib") #pragma comment(lib, "winmm.lib") Index: sounddev/SoundDeviceDirectSound.cpp =================================================================== --- sounddev/SoundDeviceDirectSound.cpp (revision 11890) +++ sounddev/SoundDeviceDirectSound.cpp (working copy) @@ -109,10 +109,10 @@ info.apiName = U_("DirectSound"); info.useNameAsIdentifier = false; info.flags = { - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsOriginal() && sysInfo.WindowsVersion.IsBefore(mpt::Windows::Version::Win7) ? Info::Usability::Usable : Info::Usability::Deprecated : Info::Usability::NotAvailable, + sysInfo.SystemClass == mpt::OS::Class::Windows ? Info::Usability::Deprecated : Info::Usability::NotAvailable, Info::Level::Primary, sysInfo.SystemClass == mpt::OS::Class::Windows && sysInfo.IsWindowsWine() ? Info::Compatible::Yes : Info::Compatible::No, - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsWine() ? Info::Api::Emulated : sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) ? Info::Api::Emulated : Info::Api::Native : Info::Api::Emulated, + Info::Api::Emulated, Info::Io::OutputOnly, Info::Mixing::Software, Info::Implementor::OpenMPT @@ -165,7 +165,7 @@ caps.HasNamedInputSources = false; caps.CanDriverPanel = false; caps.ExclusiveModeDescription = U_("Use primary buffer"); - caps.DefaultSettings.sampleFormat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) ? SampleFormatFloat32 : SampleFormatInt16; + caps.DefaultSettings.sampleFormat = GetSysInfo().IsOriginal() ? SampleFormatFloat32 : SampleFormatInt16; IDirectSound *dummy = nullptr; IDirectSound *ds = nullptr; if(m_piDS) @@ -244,14 +244,13 @@ } } } - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { - // Vista caps.supportedSampleFormats = { SampleFormatFloat32 }; caps.supportedExclusiveModeSampleFormats = { SampleFormatFloat32 }; } else if(!(dscaps.dwFlags & DSCAPS_EMULDRIVER)) { - // XP wdm + // Wine wdm-style caps.supportedSampleFormats = { SampleFormatFloat32, SampleFormatInt32, SampleFormatInt24, SampleFormatInt16, SampleFormatUnsigned8 }; caps.supportedExclusiveModeSampleFormats.clear(); if(dscaps.dwFlags & DSCAPS_PRIMARY8BIT) @@ -268,7 +267,7 @@ } } else { - // XP vdx + // Wine vdx-style // nothing, announce all, fail later caps.supportedSampleFormats = { SampleFormatFloat32, SampleFormatInt32, SampleFormatInt24, SampleFormatInt16, SampleFormatUnsigned8 }; caps.supportedExclusiveModeSampleFormats = { SampleFormatFloat32, SampleFormatInt32, SampleFormatInt24, SampleFormatInt16, SampleFormatUnsigned8 }; @@ -386,7 +385,7 @@ } m_dwWritePos = 0xFFFFFFFF; SetWakeupInterval(std::min(m_Settings.UpdateInterval, m_nDSoundBufferSize / (2.0 * m_Settings.GetBytesPerSecond()))); - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); return true; } Index: sounddev/SoundDevicePortAudio.cpp =================================================================== --- sounddev/SoundDevicePortAudio.cpp (revision 11890) +++ sounddev/SoundDevicePortAudio.cpp (working copy) @@ -160,10 +160,10 @@ framesPerBuffer = paFramesPerBufferUnspecified; // let portaudio choose } else if(m_HostApiType == paMME) { - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); } else if(m_HostApiType == paDirectSound) { - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); } else { m_Flags.NeedsClippedFloat = false; @@ -406,7 +406,7 @@ caps.DefaultSettings.sampleFormat = SampleFormatInt32; } else if(m_HostApiType == paDirectSound) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.DefaultSettings.sampleFormat = SampleFormatFloat32; } else @@ -415,11 +415,8 @@ } } else if(m_HostApiType == paMME) { - if(GetSysInfo().IsWine) + if(GetSysInfo().IsOriginal()) { - caps.DefaultSettings.sampleFormat = SampleFormatInt16; - } else if(GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) - { caps.DefaultSettings.sampleFormat = SampleFormatFloat32; } else { @@ -431,13 +428,13 @@ } if(m_HostApiType == paDirectSound) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.HasInternalDither = false; } } else if(m_HostApiType == paMME) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.HasInternalDither = false; } @@ -481,13 +478,13 @@ } if(m_HostApiType == paDirectSound) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.supportedSampleFormats = { SampleFormatFloat32 }; } } else if(m_HostApiType == paMME) { - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.supportedSampleFormats = { SampleFormatFloat32 }; } @@ -615,7 +612,6 @@ { return false; } - bool hasVista = GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista); mpt::PathString controlEXE; TCHAR systemDir[MAX_PATH]; MemsetZero(systemDir); @@ -625,7 +621,7 @@ controlEXE += P_("\\"); } controlEXE += P_("control.exe"); - return (reinterpret_cast<INT_PTR>(ShellExecute(NULL, TEXT("open"), controlEXE.AsNative().c_str(), (hasVista ? TEXT("/name Microsoft.Sound") : TEXT("mmsys.cpl")), NULL, SW_SHOW)) >= 32); + return (reinterpret_cast<INT_PTR>(ShellExecute(NULL, TEXT("open"), controlEXE.AsNative().c_str(), TEXT("/name Microsoft.Sound"), NULL, SW_SHOW)) >= 32); #else // !MPT_OS_WINDOWS return false; #endif // MPT_OS_WINDOWS @@ -774,10 +770,10 @@ case paDirectSound: result.apiName = U_("DirectSound"); result.flags = { - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsOriginal() && sysInfo.WindowsVersion.IsBefore(mpt::Windows::Version::Win7) ? Info::Usability::Usable : Info::Usability::Deprecated : Info::Usability::NotAvailable, + sysInfo.SystemClass == mpt::OS::Class::Windows ? Info::Usability::Deprecated : Info::Usability::NotAvailable, Info::Level::Secondary, Info::Compatible::No, - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsWine() ? Info::Api::Emulated : sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) ? Info::Api::Emulated : Info::Api::Native : Info::Api::Emulated, + Info::Api::Emulated, Info::Io::FullDuplex, Info::Mixing::Software, Info::Implementor::External @@ -786,10 +782,10 @@ case paMME: result.apiName = U_("MME"); result.flags = { - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsOriginal() && sysInfo.WindowsVersion.IsBefore(mpt::Windows::Version::Win7) ? Info::Usability::Usable : Info::Usability::Deprecated : Info::Usability::NotAvailable, + sysInfo.SystemClass == mpt::OS::Class::Windows ? Info::Usability::Deprecated : Info::Usability::NotAvailable, Info::Level::Secondary, Info::Compatible::No, - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsWine() ? Info::Api::Emulated : sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) ? Info::Api::Emulated : Info::Api::Native : Info::Api::Emulated, + Info::Api::Emulated, Info::Io::FullDuplex, Info::Mixing::Software, Info::Implementor::External @@ -849,19 +845,19 @@ Info::Usability::Usable, Info::Level::Primary, Info::Compatible::No, - sysInfo.SystemClass == mpt::OS::Class::Windows && sysInfo.IsWindowsOriginal() && sysInfo.WindowsVersion.IsBefore(mpt::Windows::Version::WinVista) ? Info::Api::Native : Info::Api::Emulated, + Info::Api::Emulated, Info::Io::FullDuplex, - sysInfo.SystemClass == mpt::OS::Class::Windows && sysInfo.IsWindowsOriginal() && sysInfo.WindowsVersion.IsBefore(mpt::Windows::Version::WinVista) ? Info::Mixing::Hardware : Info::Mixing::Software, + Info::Mixing::Software, Info::Implementor::External }; break; case paWDMKS: - result.apiName = sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) ? U_("WaveRT") : U_("WDM-KS"); + result.apiName = U_("WaveRT"); result.flags = { - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsOriginal() ? sysInfo.WindowsVersion.IsBefore(mpt::Windows::Version::WinVista) ? Info::Usability::Usable : Info::Usability::Usable : Info::Usability::Broken : Info::Usability::NotAvailable, + sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsOriginal() ? Info::Usability::Usable : Info::Usability::Broken : Info::Usability::NotAvailable, Info::Level::Primary, Info::Compatible::No, - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsOriginal() ? sysInfo.WindowsVersion.IsBefore(mpt::Windows::Version::WinVista) ? Info::Api::Native : Info::Api::Native : Info::Api::Emulated : Info::Api::Emulated, + sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsOriginal() ? Info::Api::Native : Info::Api::Emulated : Info::Api::Emulated, Info::Io::FullDuplex, Info::Mixing::Hardware, Info::Implementor::External @@ -882,19 +878,7 @@ case paWASAPI: result.apiName = U_("WASAPI"); result.flags = { - sysInfo.SystemClass == mpt::OS::Class::Windows ? - sysInfo.IsWindowsOriginal() ? - sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::Win7) ? - Info::Usability::Usable - : - sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) ? - Info::Usability::Experimental - : - Info::Usability::NotAvailable - : - Info::Usability::Usable - : - Info::Usability::NotAvailable, + sysInfo.SystemClass == mpt::OS::Class::Windows ? Info::Usability::Usable : Info::Usability::NotAvailable, Info::Level::Primary, Info::Compatible::No, sysInfo.SystemClass == mpt::OS::Class::Windows ? Info::Api::Native : Info::Api::Emulated, Index: sounddev/SoundDeviceRtAudio.cpp =================================================================== --- sounddev/SoundDeviceRtAudio.cpp (revision 11890) +++ sounddev/SoundDeviceRtAudio.cpp (working copy) @@ -116,7 +116,7 @@ m_Flags.NeedsClippedFloat = true; } else if(m_RtAudio->getCurrentApi() == RtAudio::Api::WINDOWS_DS) { - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); } m_RtAudio->openStream((m_OutputStreamParameters.nChannels > 0) ? &m_OutputStreamParameters : nullptr, (m_InputStreamParameters.nChannels > 0) ? &m_InputStreamParameters : nullptr, SampleFormatToRtAudioFormat(m_Settings.sampleFormat), m_Settings.Samplerate, &m_FramesPerChunk, &RtAudioCallback, this, &m_StreamOptions, nullptr); } catch (const RtAudioError &e) @@ -526,19 +526,7 @@ case RtAudio::WINDOWS_WASAPI: info.apiName = U_("WASAPI"); info.flags = { - sysInfo.SystemClass == mpt::OS::Class::Windows ? - sysInfo.IsWindowsOriginal() ? - sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::Win7) ? - Info::Usability::Usable - : - sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) ? - Info::Usability::Experimental - : - Info::Usability::NotAvailable - : - Info::Usability::Usable - : - Info::Usability::NotAvailable, + sysInfo.SystemClass == mpt::OS::Class::Windows ? Info::Usability::Usable : Info::Usability::NotAvailable, Info::Level::Secondary, Info::Compatible::No, sysInfo.SystemClass == mpt::OS::Class::Windows ? Info::Api::Native : Info::Api::Emulated, @@ -562,10 +550,10 @@ case RtAudio::WINDOWS_DS: info.apiName = U_("DirectSound"); info.flags = { - Info::Usability::Broken, // sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsOriginal() && sysInfo.WindowsVersion.IsBefore(mpt::Windows::Version::Win7) ? Info::Usability:Usable : Info::Usability::Deprecated : Info::Usability::NotAvailable, + Info::Usability::Broken, // sysInfo.SystemClass == mpt::OS::Class::Windows ? Info::Usability::Deprecated : Info::Usability::NotAvailable, Info::Level::Secondary, Info::Compatible::No, - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsWine() ? Info::Api::Emulated : sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) ? Info::Api::Emulated : Info::Api::Native : Info::Api::Emulated, + Info::Api::Emulated, Info::Io::FullDuplex, Info::Mixing::Software, Info::Implementor::External Index: sounddev/SoundDeviceUtilities.cpp =================================================================== --- sounddev/SoundDeviceUtilities.cpp (revision 11890) +++ sounddev/SoundDeviceUtilities.cpp (working copy) @@ -19,6 +19,7 @@ #include <algorithm> #if MPT_OS_WINDOWS +#include <avrt.h> #include <mmsystem.h> #endif // MPT_OS_WINDOWS @@ -131,41 +132,8 @@ } -MPT_REGISTERED_COMPONENT(ComponentAvRt, "AvRt") - -ComponentAvRt::ComponentAvRt() - : ComponentLibrary(ComponentTypeSystem) - , AvSetMmThreadCharacteristics(nullptr) - , AvRevertMmThreadCharacteristics(nullptr) -{ - return; -} - -bool ComponentAvRt::DoInitialize() -{ - if(!mpt::Windows::Version::Current().IsAtLeast(mpt::Windows::Version::WinVista)) - { - return false; - } - AddLibrary("avrt", mpt::LibraryPath::System(P_("avrt"))); - MPT_COMPONENT_BINDWIN("avrt", AvSetMmThreadCharacteristics); - MPT_COMPONENT_BIND("avrt", AvRevertMmThreadCharacteristics); - if(HasBindFailed()) - { - return false; - } - return true; -} - -ComponentAvRt::~ComponentAvRt() -{ - return; -} - - -CPriorityBooster::CPriorityBooster(SoundDevice::SysInfo sysInfo, ComponentHandle<ComponentAvRt> & avrt, bool boostPriority, const mpt::winstring & priorityClass, int priority) +CPriorityBooster::CPriorityBooster(SoundDevice::SysInfo sysInfo, bool boostPriority, const mpt::winstring & priorityClass, int priority) : m_SysInfo(sysInfo) - , m_AvRt(avrt) , m_BoostPriority(boostPriority) , m_Priority(priority) , task_idx(0) @@ -178,16 +146,9 @@ #endif if(m_BoostPriority) { - if(m_SysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) && IsComponentAvailable(m_AvRt)) + if(!priorityClass.empty()) { - if(!priorityClass.empty()) - { - hTask = m_AvRt->AvSetMmThreadCharacteristics(priorityClass.c_str(), &task_idx); - } - } else - { - oldPriority = GetThreadPriority(GetCurrentThread()); - SetThreadPriority(GetCurrentThread(), m_Priority); + hTask = AvSetMmThreadCharacteristics(priorityClass.c_str(), &task_idx); } } } @@ -198,18 +159,12 @@ MPT_TRACE_SCOPE(); if(m_BoostPriority) { - if(m_SysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) && IsComponentAvailable(m_AvRt)) + if(hTask) { - if(hTask) - { - m_AvRt->AvRevertMmThreadCharacteristics(hTask); - } - hTask = NULL; - task_idx = 0; - } else - { - SetThreadPriority(GetCurrentThread(), oldPriority); + AvRevertMmThreadCharacteristics(hTask); } + hTask = NULL; + task_idx = 0; } } @@ -322,7 +277,7 @@ if(!terminate) { - CPriorityBooster priorityBooster(m_SoundDevice.GetSysInfo(), m_AvRt, m_SoundDevice.m_Settings.BoostThreadPriority, m_MMCSSClass, m_SoundDevice.m_AppInfo.BoostedThreadPriorityXP); + CPriorityBooster priorityBooster(m_SoundDevice.GetSysInfo(), m_SoundDevice.m_Settings.BoostThreadPriority, m_MMCSSClass, m_SoundDevice.m_AppInfo.BoostedThreadPriorityXP); CPeriodicWaker periodicWaker(m_WakeupInterval); m_SoundDevice.StartFromSoundThread(); Index: sounddev/SoundDeviceUtilities.h =================================================================== --- sounddev/SoundDeviceUtilities.h (revision 11890) +++ sounddev/SoundDeviceUtilities.h (working copy) @@ -16,7 +16,6 @@ #include "SoundDeviceBase.h" #include "../common/misc_util.h" -#include "../common/ComponentManager.h" #if MPT_OS_WINDOWS #include <mmreg.h> @@ -48,27 +47,10 @@ class CSoundDeviceWithThread; -class ComponentAvRt - : public ComponentLibrary -{ - MPT_DECLARE_COMPONENT_MEMBERS -public: - typedef HANDLE (WINAPI *pAvSetMmThreadCharacteristics)(LPCTSTR, LPDWORD); - typedef BOOL (WINAPI *pAvRevertMmThreadCharacteristics)(HANDLE); - pAvSetMmThreadCharacteristics AvSetMmThreadCharacteristics; - pAvRevertMmThreadCharacteristics AvRevertMmThreadCharacteristics; -public: - ComponentAvRt(); - virtual ~ComponentAvRt(); - bool DoInitialize() override; -}; - - class CPriorityBooster { private: SoundDevice::SysInfo m_SysInfo; - ComponentHandle<ComponentAvRt> & m_AvRt; bool m_BoostPriority; int m_Priority; DWORD task_idx; @@ -75,7 +57,7 @@ HANDLE hTask; int oldPriority; public: - CPriorityBooster(SoundDevice::SysInfo sysInfo, ComponentHandle<ComponentAvRt> & avrt, bool boostPriority, const mpt::winstring & priorityClass, int priority); + CPriorityBooster(SoundDevice::SysInfo sysInfo, bool boostPriority, const mpt::winstring & priorityClass, int priority); ~CPriorityBooster(); }; @@ -85,7 +67,6 @@ friend class CPeriodicWaker; private: CSoundDeviceWithThread & m_SoundDevice; - ComponentHandle<ComponentAvRt> m_AvRt; mpt::winstring m_MMCSSClass; double m_WakeupInterval; HANDLE m_hAudioWakeUp; Index: sounddev/SoundDeviceWaveout.cpp =================================================================== --- sounddev/SoundDeviceWaveout.cpp (revision 11890) +++ sounddev/SoundDeviceWaveout.cpp (working copy) @@ -93,11 +93,8 @@ caps.CanDriverPanel = false; caps.HasInternalDither = false; caps.ExclusiveModeDescription = U_("Use direct mode"); - if(GetSysInfo().IsWine) + if(GetSysInfo().IsOriginal()) { - caps.DefaultSettings.sampleFormat = SampleFormatInt16; - } else if(GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) - { caps.DefaultSettings.sampleFormat = SampleFormatFloat32; } else { @@ -111,7 +108,7 @@ { MPT_TRACE_SCOPE(); SoundDevice::DynamicCaps caps; - if(GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)) + if(GetSysInfo().IsOriginal()) { caps.supportedSampleFormats = { SampleFormatFloat32 }; caps.supportedExclusiveModeSampleFormats = { SampleFormatFloat32 }; @@ -236,7 +233,7 @@ } SetWakeupEvent(m_ThreadWakeupEvent); SetWakeupInterval(m_nWaveBufferSize * 1.0 / m_Settings.GetBytesPerSecond()); - m_Flags.NeedsClippedFloat = (GetSysInfo().IsOriginal() && GetSysInfo().WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista)); + m_Flags.NeedsClippedFloat = GetSysInfo().IsOriginal(); return true; } @@ -374,11 +371,7 @@ ULONG nBytesWritten = 0; while((oldBuffersPending < m_nPreparedHeaders) && !m_Failed) { -#if (_WIN32_WINNT >= 0x0600) DWORD oldFlags = InterlockedOr(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwFlags), 0); -#else - DWORD oldFlags = _InterlockedOr(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwFlags), 0); -#endif uint32 driverBugs = 0; if(oldFlags & WHDR_INQUEUE) { @@ -413,11 +406,7 @@ SourceLockedAudioReadPrepare(m_nWaveBufferSize / bytesPerFrame, nLatency / bytesPerFrame); SourceLockedAudioRead(m_WaveBuffers[m_nWriteBuffer].lpData, nullptr, m_nWaveBufferSize / bytesPerFrame); nBytesWritten += m_nWaveBufferSize; -#if (_WIN32_WINNT >= 0x0600) InterlockedAnd(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwFlags), ~static_cast<DWORD>(WHDR_INQUEUE|WHDR_DONE)); -#else - _InterlockedAnd(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwFlags), ~static_cast<DWORD>(WHDR_INQUEUE|WHDR_DONE)); -#endif InterlockedExchange(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwBufferLength), m_nWaveBufferSize); InterlockedIncrement(&m_nBuffersPending); oldBuffersPending++; // increment separately to avoid looping without leaving at all when rendering takes more than 100% CPU @@ -524,11 +513,7 @@ void CWaveDevice::HandleWaveoutDone(WAVEHDR *hdr) { MPT_TRACE_SCOPE(); -#if (_WIN32_WINNT >= 0x0600) DWORD flags = InterlockedOr(interlocked_access(&hdr->dwFlags), 0); -#else - DWORD flags = _InterlockedOr(interlocked_access(&hdr->dwFlags), 0); -#endif std::size_t hdrIndex = hdr - &(m_WaveBuffers[0]); uint32 driverBugs = 0; if(hdrIndex != m_nDoneBuffer) @@ -621,10 +606,10 @@ } info.isDefault = (index == 0); info.flags = { - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsOriginal() && sysInfo.WindowsVersion.IsBefore(mpt::Windows::Version::Win7) ? Info::Usability::Usable : Info::Usability::Deprecated : Info::Usability::NotAvailable, + sysInfo.SystemClass == mpt::OS::Class::Windows ? Info::Usability::Deprecated : Info::Usability::NotAvailable, Info::Level::Primary, sysInfo.SystemClass == mpt::OS::Class::Windows && sysInfo.IsWindowsOriginal() ? Info::Compatible::Yes : Info::Compatible::No, - sysInfo.SystemClass == mpt::OS::Class::Windows ? sysInfo.IsWindowsWine() ? Info::Api::Emulated : sysInfo.WindowsVersion.IsAtLeast(mpt::Windows::Version::WinVista) ? Info::Api::Emulated : Info::Api::Native : Info::Api::Emulated, + Info::Api::Emulated, Info::Io::OutputOnly, Info::Mixing::Software, Info::Implementor::OpenMPT | ||||
Has the bug occurred in previous versions? | |||||
Tested code revision (in case you know it) | |||||
We can probably also remove 3dnow support at the same time. |
|
Support for pre-SSE2 CPUs is also basically gone (i.e. broken) in MSVC as of current VS2017. Current Windows 7 updates also do not work on non-SSE2 CPUs. |
|
Windows XP Support is already ended in 2014. But I still using in 2019. These features will be refocused to Newer PC's.
For now I have to wait to MPT 2.0 release. But I want to get my Newer PC's soon :( but I will try to wait for a serval years. Sorry Saga |
|
Additional notes.
|
|
InnoSetup 6 removes Windows XP support. For OpenMPT 1.28 we will have to continue using InnoSetup 5. |
|
InnoSetup 5 up to MPT 1.29.00 |
|
I have no idea what you are trying to say but we will certainly not wait for OpenMPT 2.0 to drop Windows XP support. By the time OpenMPT 1.29 gets released, Windows XP will be most likely 19 years old, making it the longest-supported Windows version in OpenMPT ever (second-longest would be Windows 98 SE with about 18 years). You need to realize that if you refuse to use a newer operating system, you will at some point also have to give up on using newer software. You will be able to continue using OpenMPT 1.28 on Windows XP if you absolutely must, but there will be no updates for the software. At least two tools that are required for building OpenMPT (Visual Studio and InnoSetup) will drop support for Windows XP in their next update, and we cannot stay on outdated tools forever just to support an absolute minority of OpenMPT users with fresh updates - at this point, there are even more Wine users than XP users. |
|
I think it probably makes sense to drop Windows XP already in 1.29, given the InnoSetup change. We may still continue to provide test builds for Windows XP (however I somehow question whether it is worth the (ever increasing) maintenance overhead) as test builds and .zip releases, however dropping it from the installer sounds like a good idea to not stay behind on the tools front (which always just defers migration overhead until later). |
|
r11430 removes AMD MMXEXT and AMD 3DNow! optimized functions. |
|
r11458 remove x86, MMX, SSE for the cases where we also have SSE2 optimized functions available. |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2019-01-05 18:24 | manx | New Issue | |
2019-01-05 18:24 | manx | Status | new => assigned |
2019-01-05 18:24 | manx | Assigned To | => manx |
2019-01-05 18:26 | manx | File Added: remove-winxp-v1.patch | |
2019-01-07 15:13 | manx | Relationship added | related to 0001185 |
2019-01-07 15:14 | manx | Relationship added | related to 0001120 |
2019-01-07 15:14 | manx | Relationship added | related to 0001011 |
2019-01-07 15:14 | manx | Relationship added | related to 0001123 |
2019-01-11 19:25 | manx | Note Added: 0003807 | |
2019-01-11 19:26 | manx | Note Added: 0003808 | |
2019-01-27 18:29 | Yuzu | Note Added: 0003830 | |
2019-01-27 18:34 | Yuzu | Note Added: 0003831 | |
2019-02-10 21:45 | Saga Musix | Note Added: 0003841 | |
2019-02-10 22:24 | Yuzu | Note Added: 0003843 | |
2019-02-10 22:38 | Saga Musix | Note Added: 0003844 | |
2019-02-11 05:10 | manx | Note Added: 0003845 | |
2019-02-11 05:49 | manx | Target Version | OpenMPT 2.0 (very long term goals) => OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first) |
2019-03-06 16:32 | manx | Note Added: 0003890 | |
2019-03-11 17:27 | manx | Note Added: 0003896 | |
2019-07-14 19:57 | manx | File Added: remove-winxp-v3.patch | |
2019-08-08 09:21 | manx | File Added: remove-winxp-v4.patch | |
2019-09-05 16:20 | manx | Status | assigned => resolved |
2019-09-05 16:20 | manx | Resolution | open => fixed |
2019-09-05 16:20 | manx | Fixed in Version | => OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first) |
2019-09-05 16:20 | manx | Note Added: 0004041 |