Index: blimp/client/app/compositor/browser_compositor.cc |
diff --git a/blimp/client/app/compositor/browser_compositor.cc b/blimp/client/app/compositor/browser_compositor.cc |
index 9aa4811f00fa3a66668a73229962dad310ca36fb..c87d52cd44b0917dafb777afc8dc0c5287997dce 100644 |
--- a/blimp/client/app/compositor/browser_compositor.cc |
+++ b/blimp/client/app/compositor/browser_compositor.cc |
@@ -7,6 +7,7 @@ |
#include "blimp/client/public/compositor/compositor_dependencies.h" |
#include "blimp/client/support/compositor/blimp_context_provider.h" |
#include "cc/output/context_provider.h" |
+#include "gpu/ipc/common/gpu_surface_tracker.h" |
namespace blimp { |
namespace client { |
@@ -15,14 +16,22 @@ BrowserCompositor::BrowserCompositor( |
CompositorDependencies* compositor_dependencies) |
: BlimpEmbedderCompositor(compositor_dependencies) {} |
-BrowserCompositor::~BrowserCompositor() = default; |
+BrowserCompositor::~BrowserCompositor() { |
+ if (surface_handle_ != gpu::kNullSurfaceHandle) { |
+ gpu::GpuSurfaceTracker::Get()->RemoveSurface(surface_handle_); |
+ } |
+} |
void BrowserCompositor::SetAcceleratedWidget(gfx::AcceleratedWidget widget) { |
scoped_refptr<cc::ContextProvider> provider; |
if (widget != gfx::kNullAcceleratedWidget) { |
+ DCHECK_EQ(gpu::kNullSurfaceHandle, surface_handle_); |
+ surface_handle_ = |
+ gpu::GpuSurfaceTracker::Get()->AddSurfaceForNativeWidget(widget); |
provider = BlimpContextProvider::Create( |
- widget, compositor_dependencies()->GetGpuMemoryBufferManager()); |
+ surface_handle_, |
+ compositor_dependencies()->GetGpuMemoryBufferManager()); |
} |
SetContextProvider(std::move(provider)); |