aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-01-10 20:13:09 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-01-10 20:13:09 +0000
commit6e83423f1653b97915b80e3adab477e68d2b2933 (patch)
treee735a7cc1d370c7c7b40efdf12f477aa72057bc1
parent2dc54c94f067f6e589fc2aff1b2f5800766de195 (diff)
Eliminate useless NULL push by making fIndexedData 0-based.
Depends on http://crrev.com/134223002 Testing: out/Debug/dm && out/Debug/tests && echo ok BUG=skia:1979 R=dominikg@chromium.org, tomhudson@chromium.org, halcanary@google.com Author: mtklein@google.com Review URL: https://codereview.chromium.org/134283002 git-svn-id: http://skia.googlecode.com/svn/trunk@13028 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--src/core/SkPictureFlat.h19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/core/SkPictureFlat.h b/src/core/SkPictureFlat.h
index 13c65eed66..c3623eec69 100644
--- a/src/core/SkPictureFlat.h
+++ b/src/core/SkPictureFlat.h
@@ -389,9 +389,6 @@ public:
*/
void reset() {
fIndexedData.rewind();
- // TODO(mtklein): There's no reason to have the index start from 1. Clean this up.
- // index 0 is always empty since it is used as a signal that find failed
- fIndexedData.push(NULL);
}
~SkFlatDictionary() {
@@ -399,13 +396,13 @@ public:
}
int count() const {
- SkASSERT(fHash.count() == fIndexedData.count() - 1);
+ SkASSERT(fHash.count() == fIndexedData.count());
return fHash.count();
}
// For testing only. Index is zero-based.
const SkFlatData* operator[](int index) {
- return fIndexedData[index+1];
+ return fIndexedData[index];
}
/**
@@ -449,10 +446,11 @@ public:
}
// findAndReturnMutableFlat put flat at the back. Swap it into found->index() instead.
+ // indices in SkFlatData are 1-based, while fIndexedData is 0-based. Watch out!
SkASSERT(flat->index() == this->count());
flat->setIndex(found->index());
- fIndexedData.removeShuffle(found->index());
- SkASSERT(flat == fIndexedData[found->index()]);
+ fIndexedData.removeShuffle(found->index()-1);
+ SkASSERT(flat == fIndexedData[found->index()-1]);
// findAndReturnMutableFlat already called fHash.add(), so we just clean up the old entry.
fHash.remove(*found);
@@ -474,7 +472,7 @@ public:
}
SkTRefArray<T>* array = SkTRefArray<T>::Create(count);
for (int i = 0; i < count; i++) {
- this->unflatten(&array->writableAt(i), fIndexedData[i+1]);
+ this->unflatten(&array->writableAt(i), fIndexedData[i]);
}
return array;
}
@@ -484,7 +482,8 @@ public:
* Caller takes ownership of the result.
*/
T* unflatten(int index) const {
- const SkFlatData* element = fIndexedData[index];
+ // index is 1-based, while fIndexedData is 0-based.
+ const SkFlatData* element = fIndexedData[index-1];
SkASSERT(index == element->index());
T* dst = new T;
@@ -605,7 +604,7 @@ private:
SkOrderedWriteBuffer fWriteBuffer;
bool fReady;
- // For index -> SkFlatData. fIndexedData[0] is always NULL.
+ // For index -> SkFlatData. 0-based, while all indices in the API are 1-based. Careful!
SkTDArray<const SkFlatData*> fIndexedData;
// For SkFlatData -> cached SkFlatData, which has index().