aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf
diff options
context:
space:
mode:
authorGravatar robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-16 21:20:03 +0000
committerGravatar robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-16 21:20:03 +0000
commitc029062a0312fb747fb6c2677983aba51795c580 (patch)
treef778f31a70ac586a8901d088cc894fa8f345615c /src/pdf
parent21e3ed2e9af0e4b5ae813334e631714d198f9d94 (diff)
Fixed two sub-optimal iterator uses
Diffstat (limited to 'src/pdf')
-rw-r--r--src/pdf/SkPDFDevice.cpp17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index bba703c23c..691ee26f24 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -222,16 +222,15 @@ void GraphicStackState::pop() {
// and asserts that "prefix" will be a prefix to "stack."
static void skip_clip_stack_prefix(const SkClipStack& prefix,
const SkClipStack& stack,
- SkClipStack::B2FIter* iter) {
+ SkClipStack::Iter* iter) {
SkClipStack::B2FIter prefixIter(prefix);
- iter->reset(stack);
+ iter->reset(stack, SkClipStack::Iter::kFront_IterStart);
const SkClipStack::B2FIter::Clip* prefixEntry;
const SkClipStack::B2FIter::Clip* iterEntry;
- int count = 0;
for (prefixEntry = prefixIter.next(); prefixEntry;
- prefixEntry = prefixIter.next(), count++) {
+ prefixEntry = prefixIter.next()) {
iterEntry = iter->next();
SkASSERT(iterEntry);
// Because of SkClipStack does internal intersection, the last clip
@@ -243,12 +242,8 @@ static void skip_clip_stack_prefix(const SkClipStack& prefix,
(prefixEntry->fRect == NULL));
SkASSERT((iterEntry->fPath == NULL) ==
(prefixEntry->fPath == NULL));
- // We need to back up the iterator by one but don't have that
- // function, so reset and go forward by one less.
- iter->reset(stack);
- for (int i = 0; i < count; i++) {
- iter->next();
- }
+ // back up the iterator by one
+ iter->prev();
prefixEntry = prefixIter.next();
break;
}
@@ -305,7 +300,7 @@ void GraphicStackState::updateClip(const SkClipStack& clipStack,
// initial clip on the parent layer. (This means there's a bug if the user
// expands the clip and then uses any xfer mode that uses dst:
// http://code.google.com/p/skia/issues/detail?id=228 )
- SkClipStack::B2FIter iter;
+ SkClipStack::Iter iter;
skip_clip_stack_prefix(fEntries[0].fClipStack, clipStack, &iter);
// If the clip stack does anything other than intersect or if it uses