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

Side by Side Diff: cc/resources/raster_worker_pool.cc

Issue 27066005: cc: Ref count pixel ref in image decode task. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/resources/raster_worker_pool.h" 5 #include "cc/resources/raster_worker_pool.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "cc/debug/devtools_instrumentation.h" 10 #include "cc/debug/devtools_instrumentation.h"
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 249
250 DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl); 250 DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl);
251 }; 251 };
252 252
253 class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask { 253 class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
254 public: 254 public:
255 ImageDecodeWorkerPoolTaskImpl(skia::LazyPixelRef* pixel_ref, 255 ImageDecodeWorkerPoolTaskImpl(skia::LazyPixelRef* pixel_ref,
256 int layer_id, 256 int layer_id,
257 RenderingStatsInstrumentation* rendering_stats, 257 RenderingStatsInstrumentation* rendering_stats,
258 const RasterWorkerPool::Task::Reply& reply) 258 const RasterWorkerPool::Task::Reply& reply)
259 : pixel_ref_(pixel_ref), 259 : pixel_ref_(skia::SharePtr(pixel_ref)),
260 layer_id_(layer_id), 260 layer_id_(layer_id),
261 rendering_stats_(rendering_stats), 261 rendering_stats_(rendering_stats),
262 reply_(reply) {} 262 reply_(reply) {}
263 263
264 // Overridden from internal::WorkerPoolTask: 264 // Overridden from internal::WorkerPoolTask:
265 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE { 265 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE {
266 TRACE_EVENT0("cc", "ImageDecodeWorkerPoolTaskImpl::RunOnWorkerThread"); 266 TRACE_EVENT0("cc", "ImageDecodeWorkerPoolTaskImpl::RunOnWorkerThread");
267 devtools_instrumentation::ScopedImageDecodeTask image_decode_task( 267 devtools_instrumentation::ScopedImageDecodeTask image_decode_task(
268 pixel_ref_); 268 pixel_ref_.get());
269 pixel_ref_->Decode(); 269 pixel_ref_->Decode();
270 } 270 }
271 virtual void CompleteOnOriginThread() OVERRIDE { 271 virtual void CompleteOnOriginThread() OVERRIDE {
272 reply_.Run(!HasFinishedRunning()); 272 reply_.Run(!HasFinishedRunning());
273 } 273 }
274 274
275 protected: 275 protected:
276 virtual ~ImageDecodeWorkerPoolTaskImpl() {} 276 virtual ~ImageDecodeWorkerPoolTaskImpl() {}
277 277
278 private: 278 private:
279 skia::LazyPixelRef* pixel_ref_; 279 skia::RefPtr<skia::LazyPixelRef> pixel_ref_;
280 int layer_id_; 280 int layer_id_;
281 RenderingStatsInstrumentation* rendering_stats_; 281 RenderingStatsInstrumentation* rendering_stats_;
282 const RasterWorkerPool::Task::Reply reply_; 282 const RasterWorkerPool::Task::Reply reply_;
283 283
284 DISALLOW_COPY_AND_ASSIGN(ImageDecodeWorkerPoolTaskImpl); 284 DISALLOW_COPY_AND_ASSIGN(ImageDecodeWorkerPoolTaskImpl);
285 }; 285 };
286 286
287 class RasterFinishedWorkerPoolTaskImpl : public internal::WorkerPoolTask { 287 class RasterFinishedWorkerPoolTaskImpl : public internal::WorkerPoolTask {
288 public: 288 public:
289 typedef base::Callback<void(const internal::WorkerPoolTask* source)> 289 typedef base::Callback<void(const internal::WorkerPoolTask* source)>
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 586
587 internal::GraphNode* decode_node = CreateGraphNodeForTask( 587 internal::GraphNode* decode_node = CreateGraphNodeForTask(
588 decode_task, priority, graph); 588 decode_task, priority, graph);
589 decode_node->add_dependent(raster_node); 589 decode_node->add_dependent(raster_node);
590 } 590 }
591 591
592 return raster_node; 592 return raster_node;
593 } 593 }
594 594
595 } // namespace cc 595 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698