Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: Source/core/frame/FrameView.cpp

Issue 202533003: Don't schedule an animation during compositing dirty-bit setting unless needed. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Addressed comments from abarth@. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/core/page/PageAnimator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Dirk Mueller <mueller@kde.org> 5 * 2000 Dirk Mueller <mueller@kde.org>
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com)
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
9 * Copyright (C) 2009 Google Inc. All rights reserved. 9 * Copyright (C) 2009 Google Inc. All rights reserved.
10 * 10 *
(...skipping 2770 matching lines...) Expand 10 before | Expand all | Expand 10 after
2781 2781
2782 ScrollView::paintOverhangAreas(context, horizontalOverhangArea, verticalOver hangArea, dirtyRect); 2782 ScrollView::paintOverhangAreas(context, horizontalOverhangArea, verticalOver hangArea, dirtyRect);
2783 } 2783 }
2784 2784
2785 void FrameView::updateLayoutAndStyleForPainting() 2785 void FrameView::updateLayoutAndStyleForPainting()
2786 { 2786 {
2787 // Updating layout can run script, which can tear down the FrameView. 2787 // Updating layout can run script, which can tear down the FrameView.
2788 RefPtr<FrameView> protector(this); 2788 RefPtr<FrameView> protector(this);
2789 2789
2790 updateLayoutAndStyleIfNeededRecursive(); 2790 updateLayoutAndStyleIfNeededRecursive();
2791 if (RenderView* view = renderView()) 2791 if (RenderView* view = renderView()) {
2792 ASSERT(!view->needsLayout());
2792 view->compositor()->updateCompositingLayers(); 2793 view->compositor()->updateCompositingLayers();
2794
2795 // FIXME: we should not have any dirty bits left at this point. Unfortun ately, this is not yet the case because
2796 // the code in updateCompositingLayers sometimes creates new dirty bits when updating direct compositing reasons.
2797 view->compositor()->scheduleAnimationIfNeeded();
abarth-chromium 2014/03/19 18:26:11 Would you be willing to file a bug on this topic?
chrishtr 2014/03/19 18:31:14 Done.
2798 }
2793 } 2799 }
2794 2800
2795 void FrameView::updateLayoutAndStyleIfNeededRecursive() 2801 void FrameView::updateLayoutAndStyleIfNeededRecursive()
2796 { 2802 {
2797 // We have to crawl our entire tree looking for any FrameViews that need 2803 // We have to crawl our entire tree looking for any FrameViews that need
2798 // layout and make sure they are up to date. 2804 // layout and make sure they are up to date.
2799 // Mac actually tests for intersection with the dirty region and tries not t o 2805 // Mac actually tests for intersection with the dirty region and tries not t o
2800 // update layout for frames that are outside the dirty region. Not only doe s this seem 2806 // update layout for frames that are outside the dirty region. Not only doe s this seem
2801 // pointless (since those frames will have set a zero timer to layout anyway ), but 2807 // pointless (since those frames will have set a zero timer to layout anyway ), but
2802 // it is also incorrect, since if two frames overlap, the first could be exc luded from the dirty 2808 // it is also incorrect, since if two frames overlap, the first could be exc luded from the dirty
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
3216 void FrameView::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation o rientation) 3222 void FrameView::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation o rientation)
3217 { 3223 {
3218 ScrollableArea::willRemoveScrollbar(scrollbar, orientation); 3224 ScrollableArea::willRemoveScrollbar(scrollbar, orientation);
3219 if (AXObjectCache* cache = axObjectCache()) { 3225 if (AXObjectCache* cache = axObjectCache()) {
3220 cache->remove(scrollbar); 3226 cache->remove(scrollbar);
3221 cache->handleScrollbarUpdate(this); 3227 cache->handleScrollbarUpdate(this);
3222 } 3228 }
3223 } 3229 }
3224 3230
3225 } // namespace WebCore 3231 } // namespace WebCore
OLDNEW
« no previous file with comments | « no previous file | Source/core/page/PageAnimator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698