| Index: media/video/capture/screen/screen_capturer_fake.cc | 
| diff --git a/media/video/capture/screen/screen_capturer_fake.cc b/media/video/capture/screen/screen_capturer_fake.cc | 
| index d069d5425d6e8cc5f48273370cb0784ac136fbf5..5db2765110808cd257127c607248934b02ae3ecd 100644 | 
| --- a/media/video/capture/screen/screen_capturer_fake.cc | 
| +++ b/media/video/capture/screen/screen_capturer_fake.cc | 
| @@ -39,6 +39,18 @@ ScreenCapturerFake::~ScreenCapturerFake() { | 
|  | 
| void ScreenCapturerFake::Start(Delegate* delegate) { | 
| delegate_ = delegate; | 
| + | 
| +  // Create memory for the buffers. | 
| +  int buffer_size = size_.height() * bytes_per_row_; | 
| +  for (int i = 0; i < kNumBuffers; i++) { | 
| +    shared_buffers_[i] = delegate_->CreateSharedBuffer(buffer_size); | 
| +    if (shared_buffers_[i]) { | 
| +      buffers_[i] = reinterpret_cast<uint8*>(shared_buffers_[i]->ptr()); | 
| +    } else { | 
| +      private_buffers_[i].reset(new uint8[buffer_size]); | 
| +      buffers_[i] = private_buffers_[i].get(); | 
| +    } | 
| +  } | 
| } | 
|  | 
| void ScreenCapturerFake::Stop() { | 
| @@ -60,10 +72,12 @@ void ScreenCapturerFake::CaptureFrame() { | 
| current_buffer_ = (current_buffer_ + 1) % kNumBuffers; | 
|  | 
| scoped_refptr<ScreenCaptureData> capture_data(new ScreenCaptureData( | 
| -      buffers_[current_buffer_].get(), bytes_per_row_, size_)); | 
| +      buffers_[current_buffer_], bytes_per_row_, size_)); | 
| capture_data->mutable_dirty_region() = invalid_region; | 
|  | 
| -  helper_.set_size_most_recent(capture_data->size()); | 
| +  helper_.set_size_most_recent(size_); | 
| + | 
| +  capture_data->set_shared_buffer(shared_buffers_[current_buffer_]); | 
|  | 
| capture_data->set_capture_time_ms( | 
| (base::Time::Now() - capture_start_time).InMillisecondsRoundedUp()); | 
| @@ -71,10 +85,10 @@ void ScreenCapturerFake::CaptureFrame() { | 
| } | 
|  | 
| void ScreenCapturerFake::GenerateImage() { | 
| -  memset(buffers_[current_buffer_].get(), 0xff, | 
| +  memset(buffers_[current_buffer_], 0xff, | 
| size_.width() * size_.height() * ScreenCaptureData::kBytesPerPixel); | 
|  | 
| -  uint8* row = buffers_[current_buffer_].get() + | 
| +  uint8* row = buffers_[current_buffer_] + | 
| (box_pos_y_ * size_.width() + box_pos_x_) * | 
| ScreenCaptureData::kBytesPerPixel; | 
|  | 
| @@ -107,12 +121,6 @@ void ScreenCapturerFake::GenerateImage() { | 
| void ScreenCapturerFake::ScreenConfigurationChanged() { | 
| size_ = SkISize::Make(kWidth, kHeight); | 
| bytes_per_row_ = size_.width() * ScreenCaptureData::kBytesPerPixel; | 
| - | 
| -  // Create memory for the buffers. | 
| -  int buffer_size = size_.height() * bytes_per_row_; | 
| -  for (int i = 0; i < kNumBuffers; i++) { | 
| -    buffers_[i].reset(new uint8[buffer_size]); | 
| -  } | 
| } | 
|  | 
| }  // namespace media | 
|  |