Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1207)

Unified Diff: components/native_viewport/onscreen_context_provider.cc

Issue 1139673003: Make Mandoline shut down cleanly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/native_viewport/onscreen_context_provider.cc
diff --git a/components/native_viewport/onscreen_context_provider.cc b/components/native_viewport/onscreen_context_provider.cc
index 7d6b5bfdd531c0bb5fd1995934d61e01043db94f..ec9cc530338e5df03e1aceb172475e046db1c79e 100644
--- a/components/native_viewport/onscreen_context_provider.cc
+++ b/components/native_viewport/onscreen_context_provider.cc
@@ -4,6 +4,7 @@
#include "components/native_viewport/onscreen_context_provider.h"
+#include "base/bind.h"
#include "components/gles2/command_buffer_driver.h"
#include "components/gles2/command_buffer_impl.h"
#include "components/gles2/gpu_state.h"
@@ -12,10 +13,14 @@ namespace native_viewport {
OnscreenContextProvider::OnscreenContextProvider(
const scoped_refptr<gles2::GpuState>& state)
- : state_(state), widget_(gfx::kNullAcceleratedWidget), binding_(this) {
+ : state_(state),
+ widget_(gfx::kNullAcceleratedWidget),
+ binding_(this) {
}
OnscreenContextProvider::~OnscreenContextProvider() {
+ for (const auto& driver : command_buffers_)
+ driver->DestroyWindow();
}
void OnscreenContextProvider::Bind(
@@ -45,14 +50,25 @@ void OnscreenContextProvider::Create(
void OnscreenContextProvider::CreateAndReturnCommandBuffer() {
mojo::CommandBufferPtr cb;
+ scoped_ptr<gles2::CommandBufferDriver> command_buffer_driver(
+ new gles2::CommandBufferDriver(
+ widget_, state_->share_group(), state_->mailbox_manager(),
+ state_->sync_point_manager(),
+ base::Bind(&OnscreenContextProvider::CommandBufferDestroyed,
+ base::Unretained(this))));
+ command_buffers_.insert(command_buffer_driver.get());
+
new gles2::CommandBufferImpl(
GetProxy(&cb), pending_listener_.Pass(), state_->control_task_runner(),
state_->sync_point_manager(),
- make_scoped_ptr(new gles2::CommandBufferDriver(
- widget_, state_->share_group(), state_->mailbox_manager(),
- state_->sync_point_manager())));
+ command_buffer_driver.Pass());
pending_create_callback_.Run(cb.Pass());
pending_create_callback_.reset();
}
+void OnscreenContextProvider::CommandBufferDestroyed(
+ gles2::CommandBufferDriver* command_buffer) {
+ command_buffers_.erase(command_buffer);
+}
+
} // namespace mojo
« no previous file with comments | « components/native_viewport/onscreen_context_provider.h ('k') | components/native_viewport/platform_viewport_x11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698