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(section.c_str()); Index: mptrack/BuildVariants.cpp =================================================================== --- mptrack/BuildVariants.cpp (revision 11772) +++ mptrack/BuildVariants.cpp (working copy) @@ -62,10 +62,10 @@ std::vector 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 GetStream(mpt::const_byte_span data) { CComPtr stream; -#if (_WIN32_WINNT >= _WIN32_WINNT_VISTA) stream.Attach(SHCreateMemStream(mpt::byte_cast(data.data()), mpt::saturate_cast(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::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(ShellExecute(NULL, TEXT("open"), controlEXE.AsNative().c_str(), (hasVista ? TEXT("/name Microsoft.Sound") : TEXT("mmsys.cpl")), NULL, SW_SHOW)) >= 32); + return (reinterpret_cast(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 CPortaudioDevice::EnumerateDevices(SoundDevice::SysInfo sysInfo) { + MPT_UNREFERENCED_PARAMETER(sysInfo); std::vector 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 #if MPT_OS_WINDOWS +#include #include #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 & 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 @@ -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 & 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 & 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 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(WHDR_INQUEUE|WHDR_DONE)); -#else - _InterlockedAnd(interlocked_access(&m_WaveBuffers[m_nWriteBuffer].dwFlags), ~static_cast(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)