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

Unified Diff: cc/output/gl_renderer.cc

Issue 22852006: cc: Don't leak the texture returned in CopyOutputRequest ever. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: glrendererleak: unneeded forward declare Created 7 years, 4 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: cc/output/gl_renderer.cc
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
index d1cbec3dd608ad8022206e35561eb73e2d63e10e..a6757042d1af5ef91b412520e05e0ff4e23984cc 100644
--- a/cc/output/gl_renderer.cc
+++ b/cc/output/gl_renderer.cc
@@ -162,8 +162,7 @@ GLRenderer::GLRenderer(RendererClient* client,
highp_threshold_min_(highp_threshold_min),
highp_threshold_cache_(0),
offscreen_context_labelled_(false),
- on_demand_tile_raster_resource_id_(0),
- weak_factory_(this) {
+ on_demand_tile_raster_resource_id_(0) {
DCHECK(context_);
}
@@ -2178,25 +2177,26 @@ void GLRenderer::GetFramebufferPixels(void* pixels, gfx::Rect rect) {
AsyncGetFramebufferPixelsCleanupCallback());
}
-void GLRenderer::DeleteTextureReleaseCallbackOnImplThread(unsigned texture_id,
- unsigned sync_point,
- bool lost_resource) {
+static void DeleteTextureReleaseCallbackOnImplThread(
+ const scoped_refptr<ContextProvider>& context_provider,
+ unsigned texture_id,
+ unsigned sync_point,
+ bool lost_resource) {
if (sync_point)
- context_->waitSyncPoint(sync_point);
- context_->deleteTexture(texture_id);
+ context_provider->Context3d()->waitSyncPoint(sync_point);
+ context_provider->Context3d()->deleteTexture(texture_id);
}
-// static
-void GLRenderer::DeleteTextureReleaseCallback(
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
- base::WeakPtr<GLRenderer> gl_renderer,
+static void DeleteTextureReleaseCallback(
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ const scoped_refptr<ContextProvider>& context_provider,
unsigned texture_id,
unsigned sync_point,
bool lost_resource) {
task_runner->PostTask(
FROM_HERE,
- base::Bind(&GLRenderer::DeleteTextureReleaseCallbackOnImplThread,
- gl_renderer,
+ base::Bind(&DeleteTextureReleaseCallbackOnImplThread,
+ context_provider,
texture_id,
sync_point,
lost_resource));
@@ -2245,9 +2245,9 @@ void GLRenderer::GetFramebufferPixelsAsync(
sync_point = context_->insertSyncPoint();
scoped_ptr<TextureMailbox> texture_mailbox = make_scoped_ptr(
new TextureMailbox(mailbox,
- base::Bind(&GLRenderer::DeleteTextureReleaseCallback,
+ base::Bind(&DeleteTextureReleaseCallback,
base::MessageLoopProxy::current(),
- weak_factory_.GetWeakPtr(),
+ output_surface_->context_provider(),
texture_id),
GL_TEXTURE_2D,
sync_point));

Powered by Google App Engine
This is Rietveld 408576698