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..8191f33dfb03903ce14feb00f4b84bcd4183f615 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; |
| - |
| class DisableLCDTextFilter : public SkDrawFilter { |
| public: |
| // SkDrawFilter interface. |
| @@ -73,34 +69,11 @@ 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, |
| - int stride) { |
| + // Overridden from internal::RasterWorkerPoolTask: |
| + virtual bool RunOnWorkerThread(unsigned thread_index, |
| + void* buffer, |
| + gfx::Size size, |
| + int stride) OVERRIDE { |
| TRACE_EVENT2( |
| "cc", "RasterWorkerPoolTaskImpl::RunRasterOnThread", |
|
reveman
2013/11/07 22:20:17
nit: RunOnWorkerThread
enne (OOO)
2013/11/07 22:32:09
TraceViewer uses this string directly. If I'm goi
|
| "data", |
| @@ -114,9 +87,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 +115,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,18 +165,16 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
| ChangeBitmapConfigIfNeeded(bitmap, buffer); |
| - return true; |
| - } |
| + analysis_.is_solid_color = canvas.GetColorIfSolid(&analysis_.solid_color); |
| + analysis_.has_text = canvas.HasText(); |
| - // Overridden from internal::RasterWorkerPoolTask: |
| - virtual bool RunOnWorkerThread(unsigned thread_index, |
| - void* buffer, |
| - gfx::Size size, |
| - int stride) |
| - OVERRIDE { |
| - RunAnalysisOnThread(thread_index); |
| - return RunRasterOnThread(thread_index, buffer, size, stride); |
| + // Record the solid color prediction. |
| + UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed", |
| + analysis_.is_solid_color); |
| + |
| + return !analysis_.is_solid_color; |
| } |
| + |
| virtual void CompleteOnOriginThread() OVERRIDE { |
| reply_.Run(analysis_, !HasFinishedRunning() || WasCanceled()); |
| } |