summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorvmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 23:37:39 +0000
committervmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 23:37:39 +0000
commit62fa2256d877dfdb969c745005dfaa05eb558fcd (patch)
tree61b0ed9f739be46979f9b199b23a82d92f05b626 /cc
parentcbdd73169560feddd9a235867544e6ce14d46ccf (diff)
downloadchromium_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.cc4
-rw-r--r--cc/resources/picture_pile_impl.h4
-rw-r--r--cc/resources/tile_manager.cc3
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(