From d5bdce9f860bb4d87b5d51d1d202c59ec8b851b4 Mon Sep 17 00:00:00 2001 From: "sergeyu@chromium.org" Date: Tue, 26 Oct 2010 18:03:34 +0000 Subject: Fix excessive IPCs by audio renderer. BUG=60353 TEST=see repro steps in the bug. Review URL: http://codereview.chromium.org/3973008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63909 0039d316-1c4b-4281-b951-d872f2087c98 --- media/audio/audio_output_controller.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'media/audio') diff --git a/media/audio/audio_output_controller.cc b/media/audio/audio_output_controller.cc index a6317be..602e232 100644 --- a/media/audio/audio_output_controller.cc +++ b/media/audio/audio_output_controller.cc @@ -134,9 +134,14 @@ void AudioOutputController::SetVolume(double volume) { void AudioOutputController::EnqueueData(const uint8* data, uint32 size) { // Write data to the push source and ask for more data if needed. AutoLock auto_lock(lock_); - buffer_.Append(data, size); pending_request_ = false; - SubmitOnMoreData_Locked(); + // If |size| is set to 0, it indicates that the audio source doesn't have + // more data right now, and so it doesn't make sense to send additional + // request. + if (size) { + buffer_.Append(data, size); + SubmitOnMoreData_Locked(); + } } void AudioOutputController::DoCreate(AudioParameters params, -- cgit v1.1