Chromium Code Reviews| Index: cc/resources/raster_worker_pool.cc |
| diff --git a/cc/resources/raster_worker_pool.cc b/cc/resources/raster_worker_pool.cc |
| index 67c548f19df92fe1f0990475689a157718a7d392..99a58beb9ddcaccd16a686f4ef4abb340cfe9d49 100644 |
| --- a/cc/resources/raster_worker_pool.cc |
| +++ b/cc/resources/raster_worker_pool.cc |
| @@ -31,10 +31,6 @@ class IdentityAllocator : public SkBitmap::Allocator { |
| void* buffer_; |
| }; |
| -// Flag to indicate whether we should try and detect that |
| -// a tile is of solid color. |
| -const bool kUseColorEstimator = true; |
|
enne (OOO)
2013/11/07 00:58:18
This no longer seemed useful, so I removed it.
|
| - |
| class DisableLCDTextFilter : public SkDrawFilter { |
| public: |
| // SkDrawFilter interface. |
| @@ -73,30 +69,6 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
| rendering_stats_(rendering_stats), |
| reply_(reply) {} |
| - void RunAnalysisOnThread(unsigned thread_index) { |
| - TRACE_EVENT1("cc", |
| - "RasterWorkerPoolTaskImpl::RunAnalysisOnThread", |
| - "data", |
| - TracedValue::FromValue(DataAsValue().release())); |
| - |
| - DCHECK(picture_pile_.get()); |
| - DCHECK(rendering_stats_); |
| - |
| - PicturePileImpl* picture_clone = |
| - picture_pile_->GetCloneForDrawingOnThread(thread_index); |
| - |
| - DCHECK(picture_clone); |
| - |
| - picture_clone->AnalyzeInRect(content_rect_, contents_scale_, &analysis_); |
| - |
| - // Record the solid color prediction. |
| - UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed", |
| - analysis_.is_solid_color); |
| - |
| - // Clear the flag if we're not using the estimator. |
| - analysis_.is_solid_color &= kUseColorEstimator; |
| - } |
| - |
| bool RunRasterOnThread(unsigned thread_index, |
| void* buffer, |
| gfx::Size size, |
| @@ -114,9 +86,6 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
| DCHECK(picture_pile_.get()); |
| DCHECK(buffer); |
| - if (analysis_.is_solid_color) |
| - return false; |
| - |
| PicturePileImpl* picture_clone = |
| picture_pile_->GetCloneForDrawingOnThread(thread_index); |
| @@ -145,8 +114,11 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
| break; |
| } |
| - SkBitmapDevice device(bitmap); |
| - SkCanvas canvas(&device); |
| + gfx::Rect analysis_rect( |
| + picture_clone->AnalysisRectForRaster(content_rect_, contents_scale_)); |
| + skia::AnalysisDevice device(bitmap, analysis_rect); |
| + skia::AnalysisCanvas canvas(&device); |
| + |
| skia::RefPtr<SkDrawFilter> draw_filter; |
| switch (raster_mode_) { |
| case LOW_QUALITY_RASTER_MODE: |
| @@ -192,7 +164,14 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
| ChangeBitmapConfigIfNeeded(bitmap, buffer); |
| - return true; |
| + analysis_.is_solid_color = canvas.GetColorIfSolid(&analysis_.solid_color); |
| + analysis_.has_text = canvas.HasText(); |
| + |
| + // Record the solid color prediction. |
| + UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed", |
| + analysis_.is_solid_color); |
| + |
| + return !analysis_.is_solid_color; |
| } |
| // Overridden from internal::RasterWorkerPoolTask: |
| @@ -201,7 +180,6 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
| gfx::Size size, |
| int stride) |
| OVERRIDE { |
| - RunAnalysisOnThread(thread_index); |
| return RunRasterOnThread(thread_index, buffer, size, stride); |
|
reveman
2013/11/07 15:36:31
A separate RunRasterOnThread function is not neces
enne (OOO)
2013/11/07 22:13:50
Done.
|
| } |
| virtual void CompleteOnOriginThread() OVERRIDE { |