diff options
author | vmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-18 23:37:39 +0000 |
---|---|---|
committer | vmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-18 23:37:39 +0000 |
commit | 62fa2256d877dfdb969c745005dfaa05eb558fcd (patch) | |
tree | 61b0ed9f739be46979f9b199b23a82d92f05b626 /cc | |
parent | cbdd73169560feddd9a235867544e6ce14d46ccf (diff) | |
download | chromium_src-62fa2256d877dfdb969c745005dfaa05eb558fcd.zip chromium_src-62fa2256d877dfdb969c745005dfaa05eb558fcd.tar.gz chromium_src-62fa2256d877dfdb969c745005dfaa05eb558fcd.tar.bz2 |
cc: Merge GatherPixelRefs and AnalyzeInRect
Both GatherPixelRefs and AnalyzeInRect use the same loop,
and a similar canvas to do their work. It makes sense to
merge the two so part of the work is not replicated.
BUG=179552
Review URL: https://chromiumcodereview.appspot.com/12388095
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188879 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r-- | cc/resources/picture_pile_impl.cc | 4 | ||||
-rw-r--r-- | cc/resources/picture_pile_impl.h | 4 | ||||
-rw-r--r-- | cc/resources/tile_manager.cc | 3 |
3 files changed, 11 insertions, 0 deletions
diff --git a/cc/resources/picture_pile_impl.cc b/cc/resources/picture_pile_impl.cc index 9520448..470b3a0 100644 --- a/cc/resources/picture_pile_impl.cc +++ b/cc/resources/picture_pile_impl.cc @@ -240,6 +240,7 @@ void PicturePileImpl::AnalyzeInRect(const gfx::Rect& content_rect, analysis->is_transparent = canvas.isTransparent(); analysis->is_solid_color = canvas.getColorIfSolid(&analysis->solid_color); analysis->is_cheap_to_raster = canvas.isCheap(); + canvas.consumeLazyPixelRefs(&analysis->lazy_pixel_refs); } PicturePileImpl::Analysis::Analysis() : @@ -248,4 +249,7 @@ PicturePileImpl::Analysis::Analysis() : is_cheap_to_raster(false) { } +PicturePileImpl::Analysis::~Analysis() { +} + } // namespace cc diff --git a/cc/resources/picture_pile_impl.h b/cc/resources/picture_pile_impl.h index ce64333..d5588e6 100644 --- a/cc/resources/picture_pile_impl.h +++ b/cc/resources/picture_pile_impl.h @@ -10,6 +10,7 @@ #include "cc/base/cc_export.h" #include "cc/resources/picture_pile_base.h" +#include "skia/ext/analysis_canvas.h" #include "skia/ext/refptr.h" #include "third_party/skia/include/core/SkPicture.h" @@ -43,11 +44,14 @@ class CC_EXPORT PicturePileImpl : public PicturePileBase { struct Analysis { Analysis(); + ~Analysis(); bool is_solid_color; bool is_transparent; bool is_cheap_to_raster; SkColor solid_color; + + skia::AnalysisCanvas::LazyPixelRefList lazy_pixel_refs; }; void AnalyzeInRect(const gfx::Rect& content_rect, diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc index f6b838b..153a240 100644 --- a/cc/resources/tile_manager.cc +++ b/cc/resources/tile_manager.cc @@ -728,6 +728,9 @@ void TileManager::AnalyzeTile(Tile* tile) { managed_tile_state.picture_pile_analysis.is_transparent &= use_color_estimator_; managed_tile_state.picture_pile_analyzed = true; + managed_tile_state.need_to_gather_pixel_refs = false; + managed_tile_state.pending_pixel_refs.swap( + managed_tile_state.picture_pile_analysis.lazy_pixel_refs); if (managed_tile_state.picture_pile_analysis.is_solid_color) { tile->drawing_info().set_solid_color( |