Fixed two sub-optimal iterator uses

http://codereview.appspot.com/6409048/



git-svn-id: http://skia.googlecode.com/svn/trunk@4633 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
robertphillips@google.com 2012-07-16 21:20:03 +00:00
parent 21e3ed2e9a
commit c029062a03
2 changed files with 7 additions and 13 deletions

View File

@ -534,8 +534,7 @@ SkISize SkCanvas::getDeviceSize() const {
SkDevice* SkCanvas::getDevice() const {
// return root device
SkDeque::F2BIter iter(fMCStack);
MCRec* rec = (MCRec*)iter.next();
MCRec* rec = (MCRec*) fMCStack.front();
SkASSERT(rec && rec->fLayer);
return rec->fLayer->fDevice;
}

View File

@ -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