Chromium Code Reviews| Index: content/browser/renderer_host/media/video_capture_controller.cc |
| diff --git a/content/browser/renderer_host/media/video_capture_controller.cc b/content/browser/renderer_host/media/video_capture_controller.cc |
| index bae4d44e7d97c4770e58524218d43ad2255e68e9..8620ddb1e9767634c2d16c0daad4e52378b33bc4 100644 |
| --- a/content/browser/renderer_host/media/video_capture_controller.cc |
| +++ b/content/browser/renderer_host/media/video_capture_controller.cc |
| @@ -40,20 +40,31 @@ static const int kInfiniteRatio = 99999; |
| name, \ |
| (height) ? ((width) * 100) / (height) : kInfiniteRatio); |
| -class PoolBuffer : public media::VideoCaptureDevice::Client::Buffer { |
| +// Class coalescing a Client::Buffer interface implementation and a pool buffer |
|
perkj_chrome
2015/02/20 08:42:13
Can you simplify the language in this comment a bi
mcasas
2015/02/20 15:59:06
Done.
|
| +// implementation to guarantee proper cleanup on destruction on our side. |
| +class AutoReleaseBuffer : public media::VideoCaptureDevice::Client::Buffer { |
| public: |
| - PoolBuffer(const scoped_refptr<VideoCaptureBufferPool>& pool, |
| - int buffer_id, |
| - void* data, |
| - size_t size) |
| - : Buffer(buffer_id, data, size), pool_(pool) { |
| + AutoReleaseBuffer(const scoped_refptr<VideoCaptureBufferPool>& pool, |
| + int buffer_id, |
| + void* data, |
| + size_t size) |
| + : pool_(pool), |
| + id_(buffer_id), |
| + data_(data), |
| + size_(size) { |
| DCHECK(pool_.get()); |
| } |
| + int id() const override { return id_; } |
| + void* data() const override { return data_; } |
| + size_t size() const override { return size_; } |
| private: |
| - ~PoolBuffer() override { pool_->RelinquishProducerReservation(id()); } |
| + ~AutoReleaseBuffer() override { pool_->RelinquishProducerReservation(id_); } |
| const scoped_refptr<VideoCaptureBufferPool> pool_; |
| + const int id_; |
| + void* const data_; |
| + const size_t size_; |
| }; |
| class SyncPointClientImpl : public media::VideoFrame::SyncPointClient { |
| @@ -360,7 +371,7 @@ VideoCaptureController::VideoCaptureDeviceClient::ReserveOutputBuffer( |
| buffer_pool_->GetBufferInfo(buffer_id, &data, &size); |
| scoped_refptr<media::VideoCaptureDevice::Client::Buffer> output_buffer( |
| - new PoolBuffer(buffer_pool_, buffer_id, data, size)); |
| + new AutoReleaseBuffer(buffer_pool_, buffer_id, data, size)); |
| if (buffer_id_to_drop != VideoCaptureBufferPool::kInvalidId) { |
| BrowserThread::PostTask(BrowserThread::IO, |