| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/tile_manager.h" | 5 #include "cc/resources/tile_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 contents_scale_(contents_scale), | 50 contents_scale_(contents_scale), |
| 51 tile_resolution_(tile_resolution), | 51 tile_resolution_(tile_resolution), |
| 52 layer_id_(layer_id), | 52 layer_id_(layer_id), |
| 53 tile_id_(tile_id), | 53 tile_id_(tile_id), |
| 54 source_frame_number_(source_frame_number), | 54 source_frame_number_(source_frame_number), |
| 55 analyze_picture_(analyze_picture), | 55 analyze_picture_(analyze_picture), |
| 56 rendering_stats_(rendering_stats), | 56 rendering_stats_(rendering_stats), |
| 57 reply_(reply) {} | 57 reply_(reply) {} |
| 58 | 58 |
| 59 // Overridden from Task: | 59 // Overridden from Task: |
| 60 virtual void RunOnWorkerThread() override { | 60 void RunOnWorkerThread() override { |
| 61 TRACE_EVENT0("cc", "RasterizerTaskImpl::RunOnWorkerThread"); | 61 TRACE_EVENT0("cc", "RasterizerTaskImpl::RunOnWorkerThread"); |
| 62 | 62 |
| 63 DCHECK(picture_pile_.get()); | 63 DCHECK(picture_pile_.get()); |
| 64 DCHECK(raster_buffer_); | 64 DCHECK(raster_buffer_); |
| 65 | 65 |
| 66 if (analyze_picture_) { | 66 if (analyze_picture_) { |
| 67 Analyze(picture_pile_.get()); | 67 Analyze(picture_pile_.get()); |
| 68 if (analysis_.is_solid_color) | 68 if (analysis_.is_solid_color) |
| 69 return; | 69 return; |
| 70 } | 70 } |
| 71 | 71 |
| 72 Raster(picture_pile_.get()); | 72 Raster(picture_pile_.get()); |
| 73 } | 73 } |
| 74 | 74 |
| 75 // Overridden from RasterizerTask: | 75 // Overridden from RasterizerTask: |
| 76 virtual void ScheduleOnOriginThread(RasterizerTaskClient* client) override { | 76 void ScheduleOnOriginThread(RasterizerTaskClient* client) override { |
| 77 DCHECK(!raster_buffer_); | 77 DCHECK(!raster_buffer_); |
| 78 raster_buffer_ = client->AcquireBufferForRaster(resource()); | 78 raster_buffer_ = client->AcquireBufferForRaster(resource()); |
| 79 } | 79 } |
| 80 virtual void CompleteOnOriginThread(RasterizerTaskClient* client) override { | 80 void CompleteOnOriginThread(RasterizerTaskClient* client) override { |
| 81 client->ReleaseBufferForRaster(raster_buffer_.Pass()); | 81 client->ReleaseBufferForRaster(raster_buffer_.Pass()); |
| 82 } | 82 } |
| 83 virtual void RunReplyOnOriginThread() override { | 83 void RunReplyOnOriginThread() override { |
| 84 DCHECK(!raster_buffer_); | 84 DCHECK(!raster_buffer_); |
| 85 reply_.Run(analysis_, !HasFinishedRunning()); | 85 reply_.Run(analysis_, !HasFinishedRunning()); |
| 86 } | 86 } |
| 87 | 87 |
| 88 protected: | 88 protected: |
| 89 virtual ~RasterTaskImpl() { DCHECK(!raster_buffer_); } | 89 ~RasterTaskImpl() override { DCHECK(!raster_buffer_); } |
| 90 | 90 |
| 91 private: | 91 private: |
| 92 void Analyze(const PicturePileImpl* picture_pile) { | 92 void Analyze(const PicturePileImpl* picture_pile) { |
| 93 frame_viewer_instrumentation::ScopedAnalyzeTask analyze_task( | 93 frame_viewer_instrumentation::ScopedAnalyzeTask analyze_task( |
| 94 tile_id_, tile_resolution_, source_frame_number_, layer_id_); | 94 tile_id_, tile_resolution_, source_frame_number_, layer_id_); |
| 95 | 95 |
| 96 DCHECK(picture_pile); | 96 DCHECK(picture_pile); |
| 97 | 97 |
| 98 picture_pile->AnalyzeInRect( | 98 picture_pile->AnalyzeInRect( |
| 99 content_rect_, contents_scale_, &analysis_, rendering_stats_); | 99 content_rect_, contents_scale_, &analysis_, rendering_stats_); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 ImageDecodeTaskImpl(SkPixelRef* pixel_ref, | 159 ImageDecodeTaskImpl(SkPixelRef* pixel_ref, |
| 160 int layer_id, | 160 int layer_id, |
| 161 RenderingStatsInstrumentation* rendering_stats, | 161 RenderingStatsInstrumentation* rendering_stats, |
| 162 const base::Callback<void(bool was_canceled)>& reply) | 162 const base::Callback<void(bool was_canceled)>& reply) |
| 163 : pixel_ref_(skia::SharePtr(pixel_ref)), | 163 : pixel_ref_(skia::SharePtr(pixel_ref)), |
| 164 layer_id_(layer_id), | 164 layer_id_(layer_id), |
| 165 rendering_stats_(rendering_stats), | 165 rendering_stats_(rendering_stats), |
| 166 reply_(reply) {} | 166 reply_(reply) {} |
| 167 | 167 |
| 168 // Overridden from Task: | 168 // Overridden from Task: |
| 169 virtual void RunOnWorkerThread() override { | 169 void RunOnWorkerThread() override { |
| 170 TRACE_EVENT0("cc", "ImageDecodeTaskImpl::RunOnWorkerThread"); | 170 TRACE_EVENT0("cc", "ImageDecodeTaskImpl::RunOnWorkerThread"); |
| 171 | 171 |
| 172 devtools_instrumentation::ScopedImageDecodeTask image_decode_task( | 172 devtools_instrumentation::ScopedImageDecodeTask image_decode_task( |
| 173 pixel_ref_.get()); | 173 pixel_ref_.get()); |
| 174 // This will cause the image referred to by pixel ref to be decoded. | 174 // This will cause the image referred to by pixel ref to be decoded. |
| 175 pixel_ref_->lockPixels(); | 175 pixel_ref_->lockPixels(); |
| 176 pixel_ref_->unlockPixels(); | 176 pixel_ref_->unlockPixels(); |
| 177 } | 177 } |
| 178 | 178 |
| 179 // Overridden from RasterizerTask: | 179 // Overridden from RasterizerTask: |
| 180 virtual void ScheduleOnOriginThread(RasterizerTaskClient* client) override {} | 180 void ScheduleOnOriginThread(RasterizerTaskClient* client) override {} |
| 181 virtual void CompleteOnOriginThread(RasterizerTaskClient* client) override {} | 181 void CompleteOnOriginThread(RasterizerTaskClient* client) override {} |
| 182 virtual void RunReplyOnOriginThread() override { | 182 void RunReplyOnOriginThread() override { reply_.Run(!HasFinishedRunning()); } |
| 183 reply_.Run(!HasFinishedRunning()); | |
| 184 } | |
| 185 | 183 |
| 186 protected: | 184 protected: |
| 187 virtual ~ImageDecodeTaskImpl() {} | 185 ~ImageDecodeTaskImpl() override {} |
| 188 | 186 |
| 189 private: | 187 private: |
| 190 skia::RefPtr<SkPixelRef> pixel_ref_; | 188 skia::RefPtr<SkPixelRef> pixel_ref_; |
| 191 int layer_id_; | 189 int layer_id_; |
| 192 RenderingStatsInstrumentation* rendering_stats_; | 190 RenderingStatsInstrumentation* rendering_stats_; |
| 193 const base::Callback<void(bool was_canceled)> reply_; | 191 const base::Callback<void(bool was_canceled)> reply_; |
| 194 | 192 |
| 195 DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl); | 193 DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl); |
| 196 }; | 194 }; |
| 197 | 195 |
| (...skipping 723 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 result -= other; | 919 result -= other; |
| 922 return result; | 920 return result; |
| 923 } | 921 } |
| 924 | 922 |
| 925 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { | 923 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { |
| 926 return memory_bytes_ > limit.memory_bytes_ || | 924 return memory_bytes_ > limit.memory_bytes_ || |
| 927 resource_count_ > limit.resource_count_; | 925 resource_count_ > limit.resource_count_; |
| 928 } | 926 } |
| 929 | 927 |
| 930 } // namespace cc | 928 } // namespace cc |
| OLD | NEW |