From: <man...@us...> - 2013-10-13 09:29:28
|
Revision: 2886 http://sourceforge.net/p/modplug/code/2886 Author: manxorist Date: 2013-10-13 09:29:16 +0000 (Sun, 13 Oct 2013) Log Message: ----------- [Ref] Pass SoundDeviceSettings around as a struct instead of each member individually. Modified Paths: -------------- trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/Mpdlgs.cpp trunk/OpenMPT/mptrack/Mpdlgs.h trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/TrackerSettings.h trunk/OpenMPT/sounddev/SoundDevice.cpp trunk/OpenMPT/sounddev/SoundDevice.h trunk/OpenMPT/sounddev/SoundDeviceDirectSound.cpp trunk/OpenMPT/sounddev/SoundDevicePortAudio.cpp Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2013-10-13 09:29:16 UTC (rev 2886) @@ -905,15 +905,7 @@ return false; } gpSoundDevice->SetSource(this); - SoundDeviceSettings settings; - settings.hWnd = m_hWnd; - settings.LatencyMS = TrackerSettings::Instance().m_LatencyMS; - settings.UpdateIntervalMS = TrackerSettings::Instance().m_UpdateIntervalMS; - settings.fulCfgOptions = TrackerSettings::Instance().GetSoundDeviceFlags(); - settings.Samplerate = TrackerSettings::Instance().m_MixerSettings.gdwMixingFreq; - settings.Channels = (uint8)TrackerSettings::Instance().m_MixerSettings.gnChannels; - settings.sampleFormat = TrackerSettings::Instance().m_SampleFormat; - return gpSoundDevice->Open(settings); + return gpSoundDevice->Open(TrackerSettings::Instance().GetSoundDeviceSettings()); } @@ -1724,17 +1716,11 @@ } -BOOL CMainFrame::SetupSoundCard(DWORD deviceflags, DWORD rate, SampleFormat sampleformat, UINT nChns, UINT latency_ms, UINT updateinterval_ms, SoundDeviceID deviceID) -//-------------------------------------------------------------------------------------------------------------------------------------------------------------------- +BOOL CMainFrame::SetupSoundCard(const SoundDeviceSettings &deviceSettings, SoundDeviceID deviceID) +//------------------------------------------------------------------------------------------------ { const bool isPlaying = IsPlaying(); - if ((TrackerSettings::Instance().GetSoundDeviceFlags() != deviceflags) - || (TrackerSettings::Instance().m_MixerSettings.gdwMixingFreq != rate) - || (TrackerSettings::Instance().m_nWaveDevice != deviceID) - || (TrackerSettings::Instance().m_LatencyMS != latency_ms) - || (TrackerSettings::Instance().m_UpdateIntervalMS != updateinterval_ms) - || (TrackerSettings::Instance().m_SampleFormat != sampleformat) - || (TrackerSettings::Instance().m_MixerSettings.gnChannels != nChns)) + if((TrackerSettings::Instance().m_nWaveDevice != deviceID) || (TrackerSettings::Instance().GetSoundDeviceSettings() != deviceSettings)) { CModDoc *pActiveMod = NULL; if (isPlaying) @@ -1743,12 +1729,7 @@ PauseMod(); } TrackerSettings::Instance().m_nWaveDevice = deviceID; - TrackerSettings::Instance().m_MixerSettings.gdwMixingFreq = rate; - TrackerSettings::Instance().SetSoundDeviceFlags(deviceflags); - TrackerSettings::Instance().m_LatencyMS = latency_ms; - TrackerSettings::Instance().m_UpdateIntervalMS = updateinterval_ms; - TrackerSettings::Instance().m_SampleFormat = sampleformat; - TrackerSettings::Instance().m_MixerSettings.gnChannels = nChns; + TrackerSettings::Instance().SetSoundDeviceSettings(deviceSettings); { CriticalSection cs; if (pActiveMod) UpdateAudioParameters(pActiveMod->GetrSoundFile(), FALSE); @@ -1916,7 +1897,7 @@ CPropertySheet dlg("OpenMPT Setup", this, m_nLastOptionsPage); COptionsGeneral general; - COptionsSoundcard sounddlg(TrackerSettings::Instance().m_MixerSettings.gdwMixingFreq, TrackerSettings::Instance().GetSoundDeviceFlags(), TrackerSettings::Instance().m_SampleFormat, TrackerSettings::Instance().m_MixerSettings.gnChannels, TrackerSettings::Instance().m_LatencyMS, TrackerSettings::Instance().m_UpdateIntervalMS, TrackerSettings::Instance().m_nWaveDevice); + COptionsSoundcard sounddlg(TrackerSettings::Instance().GetSoundDeviceSettings(), TrackerSettings::Instance().m_nWaveDevice); COptionsKeyboard keyboard; COptionsColors colors; COptionsPlayer playerdlg; Modified: trunk/OpenMPT/mptrack/Mainfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/mptrack/Mainfrm.h 2013-10-13 09:29:16 UTC (rev 2886) @@ -440,7 +440,7 @@ BOOL StopRenderer(CSoundFile*); void SwitchToActiveView(); - BOOL SetupSoundCard(DWORD deviceflags, DWORD rate, SampleFormat sampleformat, UINT chns, UINT latency_ms, UINT updateinterval_ms, SoundDeviceID deviceID); + BOOL SetupSoundCard(const SoundDeviceSettings &deviceSettings, SoundDeviceID deviceID); BOOL SetupMiscOptions(); BOOL SetupPlayer(); Modified: trunk/OpenMPT/mptrack/Mpdlgs.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.cpp 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/mptrack/Mpdlgs.cpp 2013-10-13 09:29:16 UTC (rev 2886) @@ -107,8 +107,8 @@ CPropertyPage::OnInitDialog(); if(TrackerSettings::Instance().m_MixerSettings.MixerFlags & SNDMIX_SOFTPANNING) CheckDlgButton(IDC_CHECK2, MF_CHECKED); - if(m_SoundDeviceFlags & SNDDEV_OPTIONS_EXCLUSIVE) CheckDlgButton(IDC_CHECK4, MF_CHECKED); - if(m_SoundDeviceFlags & SNDDEV_OPTIONS_BOOSTTHREADPRIORITY) CheckDlgButton(IDC_CHECK5, MF_CHECKED); + if(m_Settings.ExclusiveMode) CheckDlgButton(IDC_CHECK4, MF_CHECKED); + if(m_Settings.BoostThreadPriority) CheckDlgButton(IDC_CHECK5, MF_CHECKED); // Sampling Rate UpdateSampleRates(m_nSoundDevice); @@ -124,7 +124,7 @@ } // latency { - wsprintf(s, "%d ms", m_LatencyMS); + wsprintf(s, "%d ms", m_Settings.LatencyMS); m_CbnLatencyMS.SetWindowText(s); m_CbnLatencyMS.AddString("1 ms"); m_CbnLatencyMS.AddString("2 ms"); @@ -146,7 +146,7 @@ } // update interval { - wsprintf(s, "%d ms", m_UpdateIntervalMS); + wsprintf(s, "%d ms", m_Settings.UpdateIntervalMS); m_CbnUpdateIntervalMS.SetWindowText(s); m_CbnUpdateIntervalMS.AddString("1 ms"); m_CbnUpdateIntervalMS.AddString("2 ms"); @@ -253,7 +253,7 @@ wsprintf(s, "%s", gszChnCfgNames[(channels+2)/2-1]); UINT ndx = m_CbnChannels.AddString(s); m_CbnChannels.SetItemData(ndx, channels); - if(channels == m_nChannels) + if(channels == m_Settings.Channels) { n = ndx; } @@ -270,29 +270,29 @@ const bool asio = dev.GetType() == SNDDEV_ASIO; if(asio) { - m_SampleFormat = TrackerSettings::Instance().m_SampleFormat; + m_Settings.sampleFormat = TrackerSettings::Instance().m_SampleFormat; } m_CbnSampleFormat.EnableWindow(asio ? FALSE : TRUE); for(UINT bits = 40; bits >= 8; bits -= 8) { if(bits == 40) { - if(!asio || (asio && SampleFormatFloat32 == m_SampleFormat)) + if(!asio || (asio && SampleFormatFloat32 == m_Settings.sampleFormat)) { UINT ndx = m_CbnSampleFormat.AddString("Floating Point"); m_CbnSampleFormat.SetItemData(ndx, (32+128)); - if(SampleFormatFloat32 == m_SampleFormat) + if(SampleFormatFloat32 == m_Settings.sampleFormat) { n = ndx; } } } else { - if(!asio || (asio && (SampleFormat)bits == m_SampleFormat)) + if(!asio || (asio && (SampleFormat)bits == m_Settings.sampleFormat)) { UINT ndx = m_CbnSampleFormat.AddString(mpt::String::Format("%d Bit", bits).c_str()); m_CbnSampleFormat.SetItemData(ndx, bits); - if((SampleFormat)bits == m_SampleFormat) + if((SampleFormat)bits == m_Settings.sampleFormat) { n = ndx; } @@ -423,7 +423,10 @@ wsprintf(s, "%i Hz", samplerates[i]); int pos = m_CbnMixingFreq.AddString(s); m_CbnMixingFreq.SetItemData(pos, samplerates[i]); - if(m_dwRate == samplerates[i]) n = pos; + if(m_Settings.Samplerate == samplerates[i]) + { + n = pos; + } } m_CbnMixingFreq.SetCurSel(n); } @@ -457,23 +460,25 @@ //---------------------------- { if(IsDlgButtonChecked(IDC_CHECK2)) TrackerSettings::Instance().m_MixerSettings.MixerFlags |= SNDMIX_SOFTPANNING; else TrackerSettings::Instance().m_MixerSettings.MixerFlags &= ~SNDMIX_SOFTPANNING; - m_SoundDeviceFlags = 0; - if(IsDlgButtonChecked(IDC_CHECK4)) m_SoundDeviceFlags |= SNDDEV_OPTIONS_EXCLUSIVE; - if(IsDlgButtonChecked(IDC_CHECK5)) m_SoundDeviceFlags |= SNDDEV_OPTIONS_BOOSTTHREADPRIORITY; + m_Settings.ExclusiveMode = IsDlgButtonChecked(IDC_CHECK4) ? true : false; + m_Settings.BoostThreadPriority = IsDlgButtonChecked(IDC_CHECK5) ? true : false; // Mixing Freq { - m_dwRate = m_CbnMixingFreq.GetItemData(m_CbnMixingFreq.GetCurSel()); + m_Settings.Samplerate = m_CbnMixingFreq.GetItemData(m_CbnMixingFreq.GetCurSel()); } // Channels { UINT n = m_CbnChannels.GetItemData(m_CbnChannels.GetCurSel()); - m_nChannels = n; - if((m_nChannels != 1) && (m_nChannels != 4))m_nChannels = 2; + m_Settings.Channels = static_cast<uint8>(n); + if((m_Settings.Channels != 1) && (m_Settings.Channels != 4)) + { + m_Settings.Channels = 2; + } } // SampleFormat { UINT n = m_CbnSampleFormat.GetItemData(m_CbnSampleFormat.GetCurSel()); - m_SampleFormat = (SampleFormat)(n & 0xFF); + m_Settings.sampleFormat = (SampleFormat)(n & 0xFF); } // Polyphony { @@ -496,23 +501,23 @@ { CHAR s[32]; m_CbnLatencyMS.GetWindowText(s, sizeof(s)); - m_LatencyMS = atoi(s); + m_Settings.LatencyMS = atoi(s); //Check given value. - m_LatencyMS = CLAMP(m_LatencyMS, SNDDEV_MINLATENCY_MS, SNDDEV_MAXLATENCY_MS); - wsprintf(s, "%d ms", m_LatencyMS); + m_Settings.LatencyMS = CLAMP(m_Settings.LatencyMS, SNDDEV_MINLATENCY_MS, SNDDEV_MAXLATENCY_MS); + wsprintf(s, "%d ms", m_Settings.LatencyMS); m_CbnLatencyMS.SetWindowText(s); } // Update Interval { CHAR s[32]; m_CbnUpdateIntervalMS.GetWindowText(s, sizeof(s)); - m_UpdateIntervalMS = atoi(s); + m_Settings.UpdateIntervalMS = atoi(s); //Check given value. - m_UpdateIntervalMS = CLAMP(m_UpdateIntervalMS, SNDDEV_MINUPDATEINTERVAL_MS, SNDDEV_MAXUPDATEINTERVAL_MS); - wsprintf(s, "%d ms", m_UpdateIntervalMS); + m_Settings.UpdateIntervalMS = CLAMP(m_Settings.UpdateIntervalMS, SNDDEV_MINUPDATEINTERVAL_MS, SNDDEV_MAXUPDATEINTERVAL_MS); + wsprintf(s, "%d ms", m_Settings.UpdateIntervalMS); m_CbnUpdateIntervalMS.SetWindowText(s); } - CMainFrame::GetMainFrame()->SetupSoundCard(m_SoundDeviceFlags, m_dwRate, m_SampleFormat, m_nChannels, m_LatencyMS, m_UpdateIntervalMS, m_nSoundDevice); + CMainFrame::GetMainFrame()->SetupSoundCard(m_Settings, m_nSoundDevice); UpdateSampleFormat(m_nSoundDevice); UpdateStatistics(); CPropertyPage::OnOK(); Modified: trunk/OpenMPT/mptrack/Mpdlgs.h =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.h 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/mptrack/Mpdlgs.h 2013-10-13 09:29:16 UTC (rev 2886) @@ -24,18 +24,13 @@ CComboBox m_CbnLatencyMS, m_CbnUpdateIntervalMS, m_CbnMixingFreq, m_CbnPolyphony, m_CbnChannels, m_CbnSampleFormat; CSliderCtrl m_SliderStereoSep, m_SliderPreAmp; CEdit m_EditStatistics; - DWORD m_dwRate, m_SoundDeviceFlags; - SampleFormat m_SampleFormat; - DWORD m_nChannels; - DWORD m_LatencyMS; - DWORD m_UpdateIntervalMS; + SoundDeviceSettings m_Settings; SoundDeviceID m_nSoundDevice; bool m_PreAmpNoteShowed; public: - COptionsSoundcard(DWORD rate, DWORD flags, SampleFormat sampleformat, DWORD chns, DWORD latency_ms, DWORD updateinterval_ms, SoundDeviceID sd):CPropertyPage(IDD_OPTIONS_SOUNDCARD) - { m_dwRate = rate; m_SoundDeviceFlags = flags; m_SampleFormat = sampleformat; m_nChannels = chns; - m_LatencyMS = latency_ms; m_UpdateIntervalMS = updateinterval_ms; m_nSoundDevice = sd; m_PreAmpNoteShowed = false; } + COptionsSoundcard(const SoundDeviceSettings &settings, SoundDeviceID sd):CPropertyPage(IDD_OPTIONS_SOUNDCARD) + { m_Settings = settings; m_nSoundDevice = sd; m_PreAmpNoteShowed = false; } void UpdateStatistics(); Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2013-10-13 09:29:16 UTC (rev 2886) @@ -157,18 +157,31 @@ } -DWORD TrackerSettings::GetSoundDeviceFlags() const -//------------------------------------------------ +SoundDeviceSettings TrackerSettings::GetSoundDeviceSettings() const +//----------------------------------------------------------------- { - return (m_SoundDeviceExclusiveMode ? SNDDEV_OPTIONS_EXCLUSIVE : 0) | (m_SoundDeviceBoostThreadPriority ? SNDDEV_OPTIONS_BOOSTTHREADPRIORITY : 0); + SoundDeviceSettings settings; + settings.hWnd = CMainFrame::GetMainFrame()->m_hWnd; + settings.LatencyMS = m_LatencyMS; + settings.UpdateIntervalMS = m_UpdateIntervalMS; + settings.Samplerate = m_MixerSettings.gdwMixingFreq; + settings.Channels = (uint8)m_MixerSettings.gnChannels; + settings.sampleFormat = m_SampleFormat; + settings.ExclusiveMode = m_SoundDeviceExclusiveMode; + settings.BoostThreadPriority = m_SoundDeviceBoostThreadPriority; + return settings; } -void TrackerSettings::SetSoundDeviceFlags(DWORD flags) -//---------------------------------------------------- +void TrackerSettings::SetSoundDeviceSettings(const SoundDeviceSettings &settings) { - m_SoundDeviceExclusiveMode = (flags & SNDDEV_OPTIONS_EXCLUSIVE) ? true : false; - m_SoundDeviceBoostThreadPriority = (flags & SNDDEV_OPTIONS_BOOSTTHREADPRIORITY) ? true : false; + m_LatencyMS = settings.LatencyMS; + m_UpdateIntervalMS = settings.UpdateIntervalMS; + m_MixerSettings.gdwMixingFreq = settings.Samplerate; + m_MixerSettings.gnChannels = settings.Channels; + m_SampleFormat = settings.sampleFormat; + m_SoundDeviceExclusiveMode = settings.ExclusiveMode; + m_SoundDeviceBoostThreadPriority = settings.BoostThreadPriority; } Modified: trunk/OpenMPT/mptrack/TrackerSettings.h =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.h 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/mptrack/TrackerSettings.h 2013-10-13 09:29:16 UTC (rev 2886) @@ -186,8 +186,8 @@ DWORD m_UpdateIntervalMS; bool m_SoundDeviceExclusiveMode; bool m_SoundDeviceBoostThreadPriority; - DWORD GetSoundDeviceFlags() const; - void SetSoundDeviceFlags(DWORD flags); + SoundDeviceSettings GetSoundDeviceSettings() const; + void SetSoundDeviceSettings(const SoundDeviceSettings &settings); #ifndef NO_EQ EQPreset m_EqSettings; Modified: trunk/OpenMPT/sounddev/SoundDevice.cpp =================================================================== --- trunk/OpenMPT/sounddev/SoundDevice.cpp 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/sounddev/SoundDevice.cpp 2013-10-13 09:29:16 UTC (rev 2886) @@ -509,7 +509,7 @@ if(!terminate) { - CPriorityBooster priorityBooster(*this, (m_SoundDevice.m_Settings.fulCfgOptions & SNDDEV_OPTIONS_BOOSTTHREADPRIORITY)?true:false); + CPriorityBooster priorityBooster(*this, m_SoundDevice.m_Settings.BoostThreadPriority); CPeriodicWaker periodicWaker(*this, 0.001 * m_SoundDevice.GetRealUpdateIntervalMS()); m_SoundDevice.StartFromSoundThread(); Modified: trunk/OpenMPT/sounddev/SoundDevice.h =================================================================== --- trunk/OpenMPT/sounddev/SoundDevice.h 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/sounddev/SoundDevice.h 2013-10-13 09:29:16 UTC (rev 2886) @@ -126,30 +126,46 @@ #define SNDDEV_MINUPDATEINTERVAL_MS 1 #define SNDDEV_MAXUPDATEINTERVAL_MS 200 -#define SNDDEV_OPTIONS_EXCLUSIVE 0x01 // Use hardware buffers directly -#define SNDDEV_OPTIONS_BOOSTTHREADPRIORITY 0x02 // Boost thread priority for glitch-free audio rendering - struct SoundDeviceSettings { HWND hWnd; - ULONG LatencyMS; - ULONG UpdateIntervalMS; - ULONG fulCfgOptions; + uint32 LatencyMS; + uint32 UpdateIntervalMS; uint32 Samplerate; uint8 Channels; SampleFormat sampleFormat; + bool ExclusiveMode; // Use hardware buffers directly + bool BoostThreadPriority; // Boost thread priority for glitch-free audio rendering SoundDeviceSettings() : hWnd(NULL) , LatencyMS(SNDDEV_DEFAULT_LATENCY_MS) , UpdateIntervalMS(SNDDEV_DEFAULT_UPDATEINTERVAL_MS) - , fulCfgOptions(0) , Samplerate(48000) , Channels(2) , sampleFormat(SampleFormatInt16) + , ExclusiveMode(false) + , BoostThreadPriority(false) { return; } + bool operator == (const SoundDeviceSettings &cmp) const + { + return true + && hWnd == cmp.hWnd + && LatencyMS == cmp.LatencyMS + && UpdateIntervalMS == cmp.UpdateIntervalMS + && Samplerate == cmp.Samplerate + && Channels == cmp.Channels + && sampleFormat == cmp.sampleFormat + && ExclusiveMode == cmp.ExclusiveMode + && BoostThreadPriority == cmp.BoostThreadPriority + ; + } + bool operator != (const SoundDeviceSettings &cmp) const + { + return !(*this == cmp); + } }; Modified: trunk/OpenMPT/sounddev/SoundDeviceDirectSound.cpp =================================================================== --- trunk/OpenMPT/sounddev/SoundDeviceDirectSound.cpp 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/sounddev/SoundDeviceDirectSound.cpp 2013-10-13 09:29:16 UTC (rev 2886) @@ -117,7 +117,7 @@ DSBUFFERDESC dsbd; DSBCAPS dsc; - UINT nPriorityLevel = (m_Settings.fulCfgOptions & SNDDEV_OPTIONS_EXCLUSIVE) ? DSSCL_WRITEPRIMARY : DSSCL_PRIORITY; + UINT nPriorityLevel = (m_Settings.ExclusiveMode) ? DSSCL_WRITEPRIMARY : DSSCL_PRIORITY; if(m_piDS) return true; const std::wstring internalID = GetDeviceInternalID(); @@ -132,7 +132,7 @@ if(m_nDSoundBufferSize > DSOUND_MAXBUFFERSIZE) m_nDSoundBufferSize = DSOUND_MAXBUFFERSIZE; m_nBytesPerSec = pwfx->nAvgBytesPerSec; m_BytesPerSample = (pwfx->wBitsPerSample/8) * pwfx->nChannels; - if(!(m_Settings.fulCfgOptions & SNDDEV_OPTIONS_EXCLUSIVE)) + if(!m_Settings.ExclusiveMode) { // Set the format of the primary buffer dsbd.dwSize = sizeof(dsbd); Modified: trunk/OpenMPT/sounddev/SoundDevicePortAudio.cpp =================================================================== --- trunk/OpenMPT/sounddev/SoundDevicePortAudio.cpp 2013-10-13 08:17:05 UTC (rev 2885) +++ trunk/OpenMPT/sounddev/SoundDevicePortAudio.cpp 2013-10-13 09:29:16 UTC (rev 2886) @@ -73,7 +73,7 @@ } m_StreamParameters.suggestedLatency = m_Settings.LatencyMS / 1000.0; m_StreamParameters.hostApiSpecificStreamInfo = NULL; - if((m_HostApi == Pa_HostApiTypeIdToHostApiIndex(paWASAPI)) && (m_Settings.fulCfgOptions & SNDDEV_OPTIONS_EXCLUSIVE)) + if((m_HostApi == Pa_HostApiTypeIdToHostApiIndex(paWASAPI)) && m_Settings.ExclusiveMode) { MemsetZero(m_WasapiStreamInfo); m_WasapiStreamInfo.size = sizeof(PaWasapiStreamInfo); @@ -178,7 +178,7 @@ StreamParameters.sampleFormat = paInt16; StreamParameters.suggestedLatency = 0.0; StreamParameters.hostApiSpecificStreamInfo = NULL; - if((m_HostApi == Pa_HostApiTypeIdToHostApiIndex(paWASAPI)) && (m_Settings.fulCfgOptions & SNDDEV_OPTIONS_EXCLUSIVE)) + if((m_HostApi == Pa_HostApiTypeIdToHostApiIndex(paWASAPI)) && m_Settings.ExclusiveMode) { MemsetZero(m_WasapiStreamInfo); m_WasapiStreamInfo.size = sizeof(PaWasapiStreamInfo); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |