OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/tiles/software_image_decode_controller.h" | 5 #include "cc/tiles/software_image_decode_controller.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <functional> | 9 #include <functional> |
10 | 10 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
55 SoftwareImageDecodeController::ImageKeyHash>* task_map_; | 55 SoftwareImageDecodeController::ImageKeyHash>* task_map_; |
56 SoftwareImageDecodeController::ImageKey key_; | 56 SoftwareImageDecodeController::ImageKey key_; |
57 }; | 57 }; |
58 | 58 |
59 class ImageDecodeTaskImpl : public TileTask { | 59 class ImageDecodeTaskImpl : public TileTask { |
60 public: | 60 public: |
61 ImageDecodeTaskImpl(SoftwareImageDecodeController* controller, | 61 ImageDecodeTaskImpl(SoftwareImageDecodeController* controller, |
62 const SoftwareImageDecodeController::ImageKey& image_key, | 62 const SoftwareImageDecodeController::ImageKey& image_key, |
63 const DrawImage& image, | 63 const DrawImage& image, |
64 const ImageDecodeController::TracingInfo& tracing_info) | 64 const ImageDecodeController::TracingInfo& tracing_info) |
65 : TileTask(true), | 65 : TileTask(TileTask::Type::IMAGE_DECODE, true), |
66 controller_(controller), | 66 controller_(controller), |
67 image_key_(image_key), | 67 image_key_(image_key), |
68 image_(image), | 68 image_(image), |
69 tracing_info_(tracing_info) {} | 69 tracing_info_(tracing_info) {} |
70 | 70 |
71 // Overridden from Task: | 71 // Overridden from Task: |
72 void RunOnWorkerThread() override { | 72 void RunOnWorkerThread() override { |
73 TRACE_EVENT2("cc", "ImageDecodeTaskImpl::RunOnWorkerThread", "mode", | 73 TRACE_EVENT2("cc", "ImageDecodeTaskImpl::RunOnWorkerThread", "mode", |
74 "software", "source_prepare_tiles_id", | 74 "software", "source_prepare_tiles_id", |
75 tracing_info_.prepare_tiles_id); | 75 tracing_info_.prepare_tiles_id); |
76 devtools_instrumentation::ScopedImageDecodeTask image_decode_task( | 76 devtools_instrumentation::ScopedImageDecodeTask image_decode_task( |
77 image_.image().get()); | 77 image_.image().get()); |
78 controller_->DecodeImage(image_key_, image_); | 78 controller_->DecodeImage(image_key_, image_); |
79 } | 79 } |
80 | 80 |
81 // Overridden from TileTask: | |
82 void ScheduleOnOriginThread(RasterBufferProvider* provider) override {} | |
83 void CompleteOnOriginThread(RasterBufferProvider* provider) override { | |
84 controller_->RemovePendingTask(image_key_); | |
85 } | |
86 | |
87 protected: | 81 protected: |
88 ~ImageDecodeTaskImpl() override {} | 82 ~ImageDecodeTaskImpl() override {} |
89 | 83 |
90 private: | 84 public: |
vmpstr
2016/05/18 19:08:34
Why are these public? This doesn't look correct.
prashant.n
2016/05/19 00:59:52
Yes. This looks odd and not good as this class is
| |
91 SoftwareImageDecodeController* controller_; | 85 SoftwareImageDecodeController* controller_; |
92 SoftwareImageDecodeController::ImageKey image_key_; | 86 SoftwareImageDecodeController::ImageKey image_key_; |
93 DrawImage image_; | 87 DrawImage image_; |
94 const ImageDecodeController::TracingInfo tracing_info_; | 88 const ImageDecodeController::TracingInfo tracing_info_; |
95 | 89 |
90 private: | |
96 DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl); | 91 DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl); |
97 }; | 92 }; |
98 | 93 |
99 SkSize GetScaleAdjustment(const ImageDecodeControllerKey& key) { | 94 SkSize GetScaleAdjustment(const ImageDecodeControllerKey& key) { |
100 // If the requested filter quality did not require scale, then the adjustment | 95 // If the requested filter quality did not require scale, then the adjustment |
101 // is identity. | 96 // is identity. |
102 if (key.can_use_original_decode()) | 97 if (key.can_use_original_decode()) |
103 return SkSize::Make(1.f, 1.f); | 98 return SkSize::Make(1.f, 1.f); |
104 | 99 |
105 float x_scale = | 100 float x_scale = |
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
716 if (it->second->is_locked()) { | 711 if (it->second->is_locked()) { |
717 ++it; | 712 ++it; |
718 continue; | 713 continue; |
719 } | 714 } |
720 | 715 |
721 it = decoded_images_.Erase(it); | 716 it = decoded_images_.Erase(it); |
722 --num_to_remove; | 717 --num_to_remove; |
723 } | 718 } |
724 } | 719 } |
725 | 720 |
721 void SoftwareImageDecodeController::OnImageDecodeTaskCompleted(TileTask* task) { | |
722 ImageDecodeTaskImpl* decode_task = static_cast<ImageDecodeTaskImpl*>(task); | |
vmpstr
2016/05/18 19:08:34
I think we should rework this so we don't need a s
prashant.n
2016/05/19 00:59:52
I'll check this. static cast was added for downcas
| |
723 DCHECK(decode_task); | |
724 RemovePendingTask(decode_task->image_key_); | |
725 } | |
726 | |
726 void SoftwareImageDecodeController::RemovePendingTask(const ImageKey& key) { | 727 void SoftwareImageDecodeController::RemovePendingTask(const ImageKey& key) { |
727 base::AutoLock lock(lock_); | 728 base::AutoLock lock(lock_); |
728 pending_image_tasks_.erase(key); | 729 pending_image_tasks_.erase(key); |
729 } | 730 } |
730 | 731 |
731 bool SoftwareImageDecodeController::OnMemoryDump( | 732 bool SoftwareImageDecodeController::OnMemoryDump( |
732 const base::trace_event::MemoryDumpArgs& args, | 733 const base::trace_event::MemoryDumpArgs& args, |
733 base::trace_event::ProcessMemoryDump* pmd) { | 734 base::trace_event::ProcessMemoryDump* pmd) { |
734 base::AutoLock lock(lock_); | 735 base::AutoLock lock(lock_); |
735 | 736 |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
961 void SoftwareImageDecodeController::MemoryBudget::ResetUsage() { | 962 void SoftwareImageDecodeController::MemoryBudget::ResetUsage() { |
962 current_usage_bytes_ = 0; | 963 current_usage_bytes_ = 0; |
963 } | 964 } |
964 | 965 |
965 size_t SoftwareImageDecodeController::MemoryBudget::GetCurrentUsageSafe() | 966 size_t SoftwareImageDecodeController::MemoryBudget::GetCurrentUsageSafe() |
966 const { | 967 const { |
967 return current_usage_bytes_.ValueOrDie(); | 968 return current_usage_bytes_.ValueOrDie(); |
968 } | 969 } |
969 | 970 |
970 } // namespace cc | 971 } // namespace cc |
OLD | NEW |