summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCary Clark <>2009-03-24 21:09:12 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-24 21:09:12 -0700
commit02ba42cb469e2f0e26216fe434dbb912cf48d248 (patch)
treed0adfd2650cfa14335c211024e1a7839375e9651
parent1da4c23e4d3bab3ac6655659ea441f46f28cf485 (diff)
downloadexternal_webkit-02ba42cb469e2f0e26216fe434dbb912cf48d248.zip
external_webkit-02ba42cb469e2f0e26216fe434dbb912cf48d248.tar.gz
external_webkit-02ba42cb469e2f0e26216fe434dbb912cf48d248.tar.bz2
Automated import from //branches/master/...@141913,141913
-rw-r--r--WebKit/android/jni/PictureSet.cpp15
-rw-r--r--WebKit/android/jni/PictureSet.h8
2 files changed, 16 insertions, 7 deletions
diff --git a/WebKit/android/jni/PictureSet.cpp b/WebKit/android/jni/PictureSet.cpp
index 50b2a27..ac3f38a 100644
--- a/WebKit/android/jni/PictureSet.cpp
+++ b/WebKit/android/jni/PictureSet.cpp
@@ -74,7 +74,7 @@ void PictureSet::add(const Pictures* temp)
}
void PictureSet::add(const SkRegion& area, SkPicture* picture,
- uint32_t elapsed, bool split)
+ uint32_t elapsed, bool split, bool empty)
{
DBG_SET_LOGD("%p area={%d,%d,r=%d,b=%d} pict=%p elapsed=%d split=%d", this,
area.getBounds().fLeft, area.getBounds().fTop,
@@ -87,7 +87,7 @@ void PictureSet::add(const SkRegion& area, SkPicture* picture,
for (Pictures* working = mPictures.begin(); working != last; working++)
diff.op(working->mArea, SkRegion::kDifference_Op);
Pictures pictureAndBounds = {area, picture, area.getBounds(),
- elapsed, split, false, diff.isEmpty() == false};
+ elapsed, split, false, diff.isEmpty() == false, empty};
mPictures.append(pictureAndBounds);
}
@@ -435,7 +435,7 @@ bool PictureSet::isEmpty() const
{
const Pictures* last = mPictures.end();
for (const Pictures* working = mPictures.begin(); working != last; working++) {
- if (emptyPicture(working->mPicture) == false)
+ if (!working->mEmpty)
return false;
}
return true;
@@ -520,6 +520,7 @@ void PictureSet::setPicture(size_t i, SkPicture* p)
{
mPictures[i].mPicture->safeUnref();
mPictures[i].mPicture = p;
+ mPictures[i].mEmpty = emptyPicture(p);
}
void PictureSet::split(PictureSet* out) const
@@ -552,7 +553,8 @@ void PictureSet::split(PictureSet* out) const
split ? "true" : "false");
if (multiUnsplitFastPictures <= 1 || split) {
total->op(working->mArea, SkRegion::kDifference_Op);
- out->add(working->mArea, working->mPicture, elapsed, split);
+ out->add(working->mArea, working->mPicture, elapsed, split,
+ working->mEmpty);
} else if (balance < elapsed)
balance = elapsed;
continue;
@@ -585,7 +587,8 @@ void PictureSet::split(PictureSet* out) const
SkIRect cBounds;
cBounds.set(left, top, right, bottom);
out->add(SkRegion(cBounds), (across | down) != 1 ? NULL :
- working->mPicture, elapsed, true);
+ working->mPicture, elapsed, true,
+ (across | down) != 1 ? false : working->mEmpty);
left = right;
}
top = bottom;
@@ -595,7 +598,7 @@ void PictureSet::split(PictureSet* out) const
this, mWidth, mHeight, total->isEmpty() ? "true" : "false",
multiUnsplitFastPictures);
if (!total->isEmpty() && multiUnsplitFastPictures > 1)
- out->add(*total, NULL, balance, false);
+ out->add(*total, NULL, balance, false, false);
delete total;
validate(__FUNCTION__);
out->dump("split-out");
diff --git a/WebKit/android/jni/PictureSet.h b/WebKit/android/jni/PictureSet.h
index ae250b0..51ff0b5 100644
--- a/WebKit/android/jni/PictureSet.h
+++ b/WebKit/android/jni/PictureSet.h
@@ -56,7 +56,12 @@ namespace android {
PictureSet(const PictureSet& src) { set(src); }
virtual ~PictureSet();
void add(const SkRegion& area, SkPicture* picture,
- uint32_t elapsed, bool split);
+ uint32_t elapsed, bool split)
+ {
+ add(area, picture, elapsed, split, emptyPicture(picture));
+ }
+ void add(const SkRegion& area, SkPicture* picture,
+ uint32_t elapsed, bool split, bool empty);
const SkIRect& bounds(size_t i) const {
return mPictures[i].mArea.getBounds(); }
bool build();
@@ -87,6 +92,7 @@ namespace android {
bool mSplit : 8;
bool mWroteElapsed : 8;
bool mBase : 8; // true if nothing is drawn underneath this
+ bool mEmpty : 8; // true if the picture only draws white
};
void add(const Pictures* temp);
WTF::Vector<Pictures> mPictures;