Chromium Code Reviews| 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 |