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

Side by Side Diff: Source/core/rendering/RenderView.cpp

Issue 516603003: Revert of Make the compositing assert disabler for paint invalidation more targeted. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 } 582 }
583 selRect.unite(currRect); 583 selRect.unite(currRect);
584 } 584 }
585 return pixelSnappedIntRect(selRect); 585 return pixelSnappedIntRect(selRect);
586 } 586 }
587 587
588 void RenderView::invalidatePaintForSelection() const 588 void RenderView::invalidatePaintForSelection() const
589 { 589 {
590 HashSet<RenderBlock*> processedBlocks; 590 HashSet<RenderBlock*> processedBlocks;
591 591
592 // For querying RenderLayer::compositingState()
593 // FIXME: this may be wrong. crbug.com/407416
594 DisableCompositingQueryAsserts disabler;
595
596 RenderObject* end = rendererAfterPosition(m_selectionEnd, m_selectionEndPos) ; 592 RenderObject* end = rendererAfterPosition(m_selectionEnd, m_selectionEndPos) ;
597 for (RenderObject* o = m_selectionStart; o && o != end; o = o->nextInPreOrde r()) { 593 for (RenderObject* o = m_selectionStart; o && o != end; o = o->nextInPreOrde r()) {
598 if (!o->canBeSelectionLeaf() && o != m_selectionStart && o != m_selectio nEnd) 594 if (!o->canBeSelectionLeaf() && o != m_selectionStart && o != m_selectio nEnd)
599 continue; 595 continue;
600 if (o->selectionState() == SelectionNone) 596 if (o->selectionState() == SelectionNone)
601 continue; 597 continue;
602 598
603 RenderSelectionInfo(o, true).invalidatePaint(); 599 RenderSelectionInfo(o, true).invalidatePaint();
604 600
605 // Blocks are responsible for painting line gaps and margin gaps. They m ust be examined as well. 601 // Blocks are responsible for painting line gaps and margin gaps. They m ust be examined as well.
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 cb = cb->containingBlock(); 735 cb = cb->containingBlock();
740 } 736 }
741 } 737 }
742 738
743 o = getNextOrPrevRenderObjectBasedOnDirection(o, stop, continueExploring , exploringBackwards); 739 o = getNextOrPrevRenderObjectBasedOnDirection(o, stop, continueExploring , exploringBackwards);
744 } 740 }
745 741
746 if (!m_frameView || blockPaintInvalidationMode == PaintInvalidationNothing) 742 if (!m_frameView || blockPaintInvalidationMode == PaintInvalidationNothing)
747 return; 743 return;
748 744
749 // For querying RenderLayer::compositingState()
750 // FIXME: this is wrong, selection should not cause eager invalidation. crbu g.com/407416
751 DisableCompositingQueryAsserts disabler;
752
753 // Have any of the old selected objects changed compared to the new selectio n? 745 // Have any of the old selected objects changed compared to the new selectio n?
754 for (SelectedObjectMap::iterator i = oldSelectedObjects.begin(); i != oldObj ectsEnd; ++i) { 746 for (SelectedObjectMap::iterator i = oldSelectedObjects.begin(); i != oldObj ectsEnd; ++i) {
755 RenderObject* obj = i->key; 747 RenderObject* obj = i->key;
756 RenderSelectionInfo* newInfo = newSelectedObjects.get(obj); 748 RenderSelectionInfo* newInfo = newSelectedObjects.get(obj);
757 RenderSelectionInfo* oldInfo = i->value.get(); 749 RenderSelectionInfo* oldInfo = i->value.get();
758 if (!newInfo || oldInfo->rect() != newInfo->rect() || oldInfo->state() ! = newInfo->state() || 750 if (!newInfo || oldInfo->rect() != newInfo->rect() || oldInfo->state() ! = newInfo->state() ||
759 (m_selectionStart == obj && oldStartPos != m_selectionStartPos) || 751 (m_selectionStart == obj && oldStartPos != m_selectionStartPos) ||
760 (m_selectionEnd == obj && oldEndPos != m_selectionEndPos)) { 752 (m_selectionEnd == obj && oldEndPos != m_selectionEndPos)) {
761 oldInfo->invalidatePaint(); 753 oldInfo->invalidatePaint();
762 if (newInfo) { 754 if (newInfo) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 void RenderView::getSelection(RenderObject*& startRenderer, int& startOffset, Re nderObject*& endRenderer, int& endOffset) const 787 void RenderView::getSelection(RenderObject*& startRenderer, int& startOffset, Re nderObject*& endRenderer, int& endOffset) const
796 { 788 {
797 startRenderer = m_selectionStart; 789 startRenderer = m_selectionStart;
798 startOffset = m_selectionStartPos; 790 startOffset = m_selectionStartPos;
799 endRenderer = m_selectionEnd; 791 endRenderer = m_selectionEnd;
800 endOffset = m_selectionEndPos; 792 endOffset = m_selectionEndPos;
801 } 793 }
802 794
803 void RenderView::clearSelection() 795 void RenderView::clearSelection()
804 { 796 {
805 // For querying RenderLayer::compositingState()
806 // This is correct, since destroying render objects needs to cause eager pai nt invalidations.
807 DisableCompositingQueryAsserts disabler;
808
809 layer()->invalidatePaintForBlockSelectionGaps(); 797 layer()->invalidatePaintForBlockSelectionGaps();
810 setSelection(0, -1, 0, -1, PaintInvalidationNewMinusOld); 798 setSelection(0, -1, 0, -1, PaintInvalidationNewMinusOld);
811 } 799 }
812 800
813 void RenderView::selectionStartEnd(int& startPos, int& endPos) const 801 void RenderView::selectionStartEnd(int& startPos, int& endPos) const
814 { 802 {
815 startPos = m_selectionStartPos; 803 startPos = m_selectionStartPos;
816 endPos = m_selectionEndPos; 804 endPos = m_selectionEndPos;
817 } 805 }
818 806
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 return viewWidth(IncludeScrollbars) / scale; 991 return viewWidth(IncludeScrollbars) / scale;
1004 } 992 }
1005 993
1006 double RenderView::layoutViewportHeight() const 994 double RenderView::layoutViewportHeight() const
1007 { 995 {
1008 float scale = m_frameView ? m_frameView->frame().pageZoomFactor() : 1; 996 float scale = m_frameView ? m_frameView->frame().pageZoomFactor() : 1;
1009 return viewHeight(IncludeScrollbars) / scale; 997 return viewHeight(IncludeScrollbars) / scale;
1010 } 998 }
1011 999
1012 } // namespace blink 1000 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderObject.cpp ('k') | Source/core/rendering/compositing/RenderLayerCompositor.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698