| Index: content/browser/android/in_process/synchronous_compositor_output_surface.cc
|
| diff --git a/content/browser/android/in_process/synchronous_compositor_output_surface.cc b/content/browser/android/in_process/synchronous_compositor_output_surface.cc
|
| index 1e61994e2d00bab2b9cfb4f1bcd94f7f67fd7bbb..95d82804247a41976c30ad13917e8febc90aafab 100644
|
| --- a/content/browser/android/in_process/synchronous_compositor_output_surface.cc
|
| +++ b/content/browser/android/in_process/synchronous_compositor_output_surface.cc
|
| @@ -16,6 +16,7 @@
|
| #include "content/browser/gpu/compositor_util.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/renderer/gpu/frame_swap_message_queue.h"
|
| +#include "gpu/command_buffer/client/context_support.h"
|
| #include "gpu/command_buffer/client/gles2_interface.h"
|
| #include "gpu/command_buffer/common/gpu_memory_allocation.h"
|
| #include "third_party/skia/include/core/SkCanvas.h"
|
| @@ -243,11 +244,22 @@ void SynchronousCompositorOutputSurface::ReturnResources(
|
|
|
| void SynchronousCompositorOutputSurface::SetMemoryPolicy(size_t bytes_limit) {
|
| DCHECK(CalledOnValidThread());
|
| + bool became_zero = memory_policy_.bytes_limit_when_visible && !bytes_limit;
|
| + bool became_non_zero =
|
| + !memory_policy_.bytes_limit_when_visible && bytes_limit;
|
| memory_policy_.bytes_limit_when_visible = bytes_limit;
|
| memory_policy_.num_resources_limit = kNumResourcesLimit;
|
|
|
| if (client_)
|
| client_->SetMemoryPolicy(memory_policy_);
|
| +
|
| + if (became_zero) {
|
| + // This is small hack to drop context resources without destroying it
|
| + // when this compositor is put into the background.
|
| + context_provider()->ContextSupport()->SetSurfaceVisible(false);
|
| + } else if (became_non_zero) {
|
| + context_provider()->ContextSupport()->SetSurfaceVisible(true);
|
| + }
|
| }
|
|
|
| void SynchronousCompositorOutputSurface::SetTreeActivationCallback(
|
|
|