OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |