1212#include " CWebCore.h"
1313#include " CWebView.h"
1414#include " CWebsiteRequests.h"
15- #include < Audiopolicy.h>
1615#include < cef3/include/cef_app.h>
1716#include < cef3/include/cef_browser.h>
1817#include < cef3/include/cef_sandbox_win.h>
@@ -37,12 +36,6 @@ CWebCore::CWebCore ()
3736
3837 // Update dynamic lists from QA server
3938 UpdateListsFromMaster ();
40-
41- // Get AudioVolume COM interface if the Audio Core API is available
42- if ( GetApplicationSetting (" os-version" ) >= " 6.2" )
43- {
44- InitialiseCoreAudio ();
45- }
4639}
4740
4841CWebCore::~CWebCore ()
@@ -401,71 +394,14 @@ void CWebCore::ClearTextures ()
401394 }
402395}
403396
404- bool CWebCore::InitialiseCoreAudio ()
405- {
406- const CLSID CLSID_MMDeviceEnumerator = __uuidof (MMDeviceEnumerator);
407- const IID IID_IMMDeviceEnumerator = __uuidof (IMMDeviceEnumerator);
408- const IID IID_IAudioSessionManager2 = __uuidof (IAudioSessionManager2);
409-
410- IMMDeviceEnumerator* pEnumerator;
411- CoCreateInstance ( CLSID_MMDeviceEnumerator, NULL , CLSCTX_ALL, IID_IMMDeviceEnumerator, (void **)&pEnumerator );
412- if ( !pEnumerator )
413- return false ;
414-
415- IMMDevice* pMMDevice;
416- pEnumerator->GetDefaultAudioEndpoint ( EDataFlow::eRender, ERole::eMultimedia, &pMMDevice );
417- pEnumerator->Release ();
418- if ( !pMMDevice )
419- return false ;
420-
421- IAudioSessionManager2* pAudioSessionManager;
422- pMMDevice->Activate ( IID_IAudioSessionManager2, 0 , NULL , (void **)&pAudioSessionManager );
423- pMMDevice->Release ();
424- if ( !pAudioSessionManager )
425- return false ;
426-
427- m_pAudioSessionManager = pAudioSessionManager;
428- return true ;
429- }
430-
431397bool CWebCore::SetGlobalAudioVolume ( float fVolume )
432398{
433399 if ( fVolume < 0 .0f || fVolume > 1 .0f )
434400 return false ;
435401
436- if ( GetApplicationSetting ( " os-version" ) < " 6.2" || !m_pAudioSessionManager )
437- {
438- for ( auto & pWebView : m_WebViews )
439- {
440- pWebView->SetAudioVolume ( fVolume );
441- }
442- }
443- else
402+ for ( auto & pWebView : m_WebViews )
444403 {
445- IAudioSessionEnumerator* pSessionEnumerator;
446- m_pAudioSessionManager->GetSessionEnumerator ( &pSessionEnumerator );
447- if ( !pSessionEnumerator )
448- return false ;
449-
450- // Obtain the associated ISimpleAudioVolume interface
451- int sessionCount;
452- pSessionEnumerator->GetCount ( &sessionCount );
453- for ( int i = 0 ; i < sessionCount; ++i )
454- {
455- IAudioSessionControl2* pSessionControl;
456- pSessionEnumerator->GetSession ( i, (IAudioSessionControl**)&pSessionControl );
457- PWSTR szIdentifier;
458- pSessionControl->GetSessionIdentifier (&szIdentifier);
459-
460- if ( std::wstring (szIdentifier).find (L" CEFLauncher" ) != std::string::npos )
461- {
462- ISimpleAudioVolume* pSimpleAudioVolume;
463- pSessionControl->QueryInterface ( &pSimpleAudioVolume );
464- pSimpleAudioVolume->SetMasterVolume ( fVolume , NULL );
465- }
466- pSessionControl->Release ();
467- }
468- pSessionEnumerator->Release ();
404+ pWebView->SetAudioVolume ( fVolume );
469405 }
470406 return true ;
471407}
0 commit comments