diff --git a/webrtc/modules/audio_device/include/fake_audio_device.h b/webrtc/modules/audio_device/include/fake_audio_device.h index a28ad86464..1797dd5e8d 100644 --- a/webrtc/modules/audio_device/include/fake_audio_device.h +++ b/webrtc/modules/audio_device/include/fake_audio_device.h @@ -41,8 +41,20 @@ class FakeAudioDeviceModule : public AudioDeviceModule { virtual int32_t SetStereoRecording(bool enable) { return 0; } virtual int32_t SetAGC(bool enable) { return 0; } virtual int32_t StopRecording() { return 0; } - virtual int64_t TimeUntilNextProcess() { return 0; } - virtual void Process() {} + + // If the subclass doesn't override the ProcessThread implementation, + // we'll fall back on an implementation that doesn't eat too much CPU. + virtual int64_t TimeUntilNextProcess() { + if (turn_off_module_callbacks_) + return 7 * 24 * 60 * 60 * 1000; // call me next week. + uses_default_module_implementation_ = true; + return 10; + } + + virtual void Process() { + turn_off_module_callbacks_ = uses_default_module_implementation_; + } + virtual int32_t Terminate() { return 0; } virtual int32_t ActiveAudioLayer(AudioLayer* audioLayer) const { return 0; } @@ -167,6 +179,10 @@ class FakeAudioDeviceModule : public AudioDeviceModule { return -1; } #endif // WEBRTC_IOS + + private: + bool uses_default_module_implementation_ = false; + bool turn_off_module_callbacks_ = false; }; } // namespace webrtc