Index: media/audio/win/audio_device_listener_win.h |
diff --git a/media/audio/win/audio_device_listener_win.h b/media/audio/win/audio_device_listener_win.h |
index 9c2ac4824a67ebc92284fcbbc1eb9af7a87ddf99..053afa64380df8e5a97f2817b813aa03718ee593 100644 |
--- a/media/audio/win/audio_device_listener_win.h |
+++ b/media/audio/win/audio_device_listener_win.h |
@@ -11,11 +11,16 @@ |
#include "base/basictypes.h" |
#include "base/callback.h" |
#include "base/threading/thread_checker.h" |
+#include "base/time/time.h" |
#include "base/win/scoped_comptr.h" |
#include "media/base/media_export.h" |
using base::win::ScopedComPtr; |
+namespace base { |
+class TickClock; |
+} |
+ |
namespace media { |
// IMMNotificationClient implementation for listening for default device changes |
@@ -35,6 +40,9 @@ class MEDIA_EXPORT AudioDeviceListenerWin : public IMMNotificationClient { |
private: |
friend class AudioDeviceListenerWinTest; |
+ // Minimum allowed time between device change notifications. |
+ static const int kDeviceChangeLimitMs = 250; |
+ |
// IMMNotificationClient implementation. |
STDMETHOD_(ULONG, AddRef)() override; |
STDMETHOD_(ULONG, Release)() override; |
@@ -50,14 +58,15 @@ class MEDIA_EXPORT AudioDeviceListenerWin : public IMMNotificationClient { |
base::Closure listener_cb_; |
ScopedComPtr<IMMDeviceEnumerator> device_enumerator_; |
- std::string default_render_device_id_; |
- std::string default_capture_device_id_; |
- std::string default_communications_render_device_id_; |
- std::string default_communications_capture_device_id_; |
+ |
+ // Used to rate limit device change events. |
+ base::TimeTicks last_device_change_time_; |
// AudioDeviceListenerWin must be constructed and destructed on one thread. |
base::ThreadChecker thread_checker_; |
+ scoped_ptr<base::TickClock> tick_clock_; |
+ |
DISALLOW_COPY_AND_ASSIGN(AudioDeviceListenerWin); |
}; |