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

Unified Diff: content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.cc

Issue 600693002: content: Cleanup GpuMemoryBufferImpl destruction. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove scoped_refptr<> from sender param of DeletedGpuMemoryBuffer Created 6 years, 3 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: content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.cc
diff --git a/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.cc b/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.cc
index afb4bf2656abe91dd928aeaffeafb5bfffe3055c..872fad108bd65f49f9ba28571e845333763e2ec4 100644
--- a/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.cc
+++ b/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.cc
@@ -13,14 +13,45 @@ namespace content {
GpuMemoryBufferImplSurfaceTexture::GpuMemoryBufferImplSurfaceTexture(
const gfx::Size& size,
- unsigned internalformat)
- : GpuMemoryBufferImpl(size, internalformat),
- native_window_(NULL),
- stride_(0u) {}
+ unsigned internalformat,
+ const DestructionCallback& callback,
+ const gfx::SurfaceTextureId& surface_texture_id,
+ ANativeWindow* native_window)
+ : GpuMemoryBufferImpl(size, internalformat, callback),
+ surface_texture_id_(surface_texture_id),
+ native_window_(native_window),
+ stride_(0u) {
+}
GpuMemoryBufferImplSurfaceTexture::~GpuMemoryBufferImplSurfaceTexture() {
- if (native_window_)
- ANativeWindow_release(native_window_);
+ ANativeWindow_release(native_window_);
+}
+
+// static
+scoped_ptr<GpuMemoryBufferImpl>
+GpuMemoryBufferImplSurfaceTexture::CreateFromHandle(
+ const gfx::GpuMemoryBufferHandle& handle,
+ const gfx::Size& size,
+ unsigned internalformat,
+ const DestructionCallback& callback) {
+ DCHECK(IsFormatSupported(internalformat));
+
+ ANativeWindow* native_window =
+ SurfaceTextureLookup::GetInstance()->AcquireNativeWidget(
+ handle.surface_texture_id.primary_id,
+ handle.surface_texture_id.secondary_id);
+ if (!native_window)
+ return scoped_ptr<GpuMemoryBufferImpl>();
+
+ ANativeWindow_setBuffersGeometry(
+ native_window, size.width(), size.height(), WindowFormat(internalformat));
+
+ return make_scoped_ptr<GpuMemoryBufferImpl>(
+ new GpuMemoryBufferImplSurfaceTexture(size,
+ internalformat,
+ callback,
+ handle.surface_texture_id,
+ native_window));
}
// static
@@ -62,28 +93,6 @@ int GpuMemoryBufferImplSurfaceTexture::WindowFormat(unsigned internalformat) {
}
}
-bool GpuMemoryBufferImplSurfaceTexture::InitializeFromHandle(
- const gfx::GpuMemoryBufferHandle& handle) {
- TRACE_EVENT0("gpu",
- "GpuMemoryBufferImplSurfaceTexture::InitializeFromHandle");
-
- DCHECK(IsFormatSupported(internalformat_));
- DCHECK(!native_window_);
- native_window_ = SurfaceTextureLookup::GetInstance()->AcquireNativeWidget(
- handle.surface_texture_id.primary_id,
- handle.surface_texture_id.secondary_id);
- if (!native_window_)
- return false;
-
- ANativeWindow_setBuffersGeometry(native_window_,
- size_.width(),
- size_.height(),
- WindowFormat(internalformat_));
-
- surface_texture_id_ = handle.surface_texture_id;
- return true;
-}
-
void* GpuMemoryBufferImplSurfaceTexture::Map() {
TRACE_EVENT0("gpu", "GpuMemoryBufferImplSurfaceTexture::Map");

Powered by Google App Engine
This is Rietveld 408576698