| Index: content/browser/compositor/buffer_queue.cc
|
| diff --git a/content/browser/compositor/buffer_queue.cc b/content/browser/compositor/buffer_queue.cc
|
| index 689288f6d63b75d10c0b329fb32205d234ee1140..b6f4815c34851bcb802e03fd9661f281136710c1 100644
|
| --- a/content/browser/compositor/buffer_queue.cc
|
| +++ b/content/browser/compositor/buffer_queue.cc
|
| @@ -120,6 +120,26 @@ void BufferQueue::Reshape(const gfx::Size& size, float scale_factor) {
|
| FreeAllSurfaces();
|
| }
|
|
|
| +void BufferQueue::RecreateBuffers() {
|
| + AllocatedSurface previous = in_flight_surfaces_.back();
|
| + in_flight_surfaces_.pop_back();
|
| + FreeAllSurfaces();
|
| + FreeSurface(¤t_surface_);
|
| +
|
| + AllocatedSurface first_buffer = GetNextSurface();
|
| + CopyBufferDamage(first_buffer.texture, previous.texture, gfx::Rect(),
|
| + gfx::Rect(size_));
|
| + in_flight_surfaces_.push_back(first_buffer);
|
| +
|
| + AllocatedSurface second_buffer = GetNextSurface();
|
| + CopyBufferDamage(second_buffer.texture, previous.texture, gfx::Rect(),
|
| + gfx::Rect(size_));
|
| + available_surfaces_.push_back(second_buffer);
|
| +
|
| + BindFramebuffer();
|
| + FreeSurface(&previous);
|
| +}
|
| +
|
| void BufferQueue::PageFlipComplete() {
|
| if (in_flight_surfaces_.size() > 1) {
|
| available_surfaces_.push_back(in_flight_surfaces_.front());
|
|
|