Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Unified Diff: media/audio/win/audio_device_listener_win.cc

Issue 11529012: Use the device listener in Media on windows (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: used media::CoreAudioUtil::IsSupported() Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/audio/win/audio_device_listener_win.cc
diff --git a/media/audio/win/audio_device_listener_win.cc b/media/audio/win/audio_device_listener_win.cc
index 9312af62cc78b7d3239a10d306c79a6468a74284..78e84302896fc2c15649f06b769308fc2c2c8d35 100644
--- a/media/audio/win/audio_device_listener_win.cc
+++ b/media/audio/win/audio_device_listener_win.cc
@@ -7,6 +7,7 @@
#include <Audioclient.h>
#include "base/logging.h"
+#include "base/system_monitor/system_monitor.h"
#include "base/utf_string_conversions.h"
#include "base/win/scoped_co_mem.h"
#include "base/win/windows_version.h"
@@ -18,7 +19,8 @@ using base::win::ScopedCoMem;
namespace media {
AudioDeviceListenerWin::AudioDeviceListenerWin(const base::Closure& listener_cb)
- : listener_cb_(listener_cb) {
+ : listener_cb_(listener_cb),
+ pending_capture_device_changed_(false) {
CHECK(CoreAudioUtil::IsSupported());
ScopedComPtr<IMMDeviceEnumerator> device_enumerator(
@@ -101,12 +103,24 @@ STDMETHODIMP AudioDeviceListenerWin::OnDeviceRemoved(LPCWSTR device_id) {
STDMETHODIMP AudioDeviceListenerWin::OnDeviceStateChanged(LPCWSTR device_id,
DWORD new_state) {
+ if (!pending_capture_device_changed_)
tommi (sloooow) - chröme 2012/12/13 13:16:58 This doesn't seem right. With this change we igno
no longer working on chromium 2012/12/13 14:54:58 This flag is to prevent sending ProcessDevicesChan
+ return S_OK;
+
+ base::SystemMonitor* monitor = base::SystemMonitor::Get();
+ if (monitor)
+ monitor->ProcessDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO_CAPTURE);
+
+ pending_capture_device_changed_ = false;
return S_OK;
}
STDMETHODIMP AudioDeviceListenerWin::OnDefaultDeviceChanged(
EDataFlow flow, ERole role, LPCWSTR new_default_device_id) {
- // Only listen for output device changes right now...
tommi (sloooow) - chröme 2012/12/13 13:16:58 why remove this comment?
no longer working on chromium 2012/12/13 14:54:58 because we are also listening to capture device ch
+ if (role == eCapture) {
+ pending_capture_device_changed_ = true;
tommi (sloooow) - chröme 2012/12/13 13:16:58 Imho this variable should be called |default_captu
no longer working on chromium 2012/12/13 14:54:58 I changed the name to capture_device_changed_, sin
+ return S_OK;
+ }
+
if (flow != eConsole && role != eRender)
return S_OK;
« content/browser/system_message_window_win.cc ('K') | « media/audio/win/audio_device_listener_win.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698