Fix busy loop in FakeAudioDeviceModule.

The implementation now has a mechanism that effectively turns off callbacks if used.

BUG=webrtc:7237, 695438
TBR=solenberg@webrtc.org

Review-Url: https://codereview.webrtc.org/2710023010
Cr-Commit-Position: refs/heads/master@{#16837}
This commit is contained in:
tommi 2017-02-25 09:05:22 -08:00 committed by Commit bot
parent d74517c52a
commit 4af9f962c3

View File

@ -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