Changeset 110581 in webkit
- Timestamp:
- Mar 13, 2012 11:05:47 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r110580 r110581 1 2012-03-13 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r110469. 4 http://trac.webkit.org/changeset/110469 5 https://bugs.webkit.org/show_bug.cgi?id=81010 6 7 This patch still appears to crash (Requested by abarth on 8 #webkit). 9 10 * page/FrameView.cpp: 11 (WebCore::FrameView::FrameView): 12 (WebCore::FrameView::reset): 13 (WebCore::FrameView::repaintContentRectangle): 14 (WebCore): 15 (WebCore::FrameView::endDeferredRepaints): 16 (WebCore::FrameView::doDeferredRepaints): 17 (WebCore::FrameView::deferredRepaintTimerFired): 18 * page/FrameView.h: 19 (FrameView): 20 * rendering/RenderView.cpp: 21 (WebCore::RenderView::shouldRepaint): 22 * svg/graphics/SVGImage.cpp: 23 (WebCore::SVGImage::drawSVGToImageBuffer): 24 (WebCore::SVGImage::draw): 25 * svg/graphics/SVGImage.h: 26 * svg/graphics/SVGImageCache.cpp: 27 (WebCore::SVGImageCache::imageContentChanged): 28 (WebCore::SVGImageCache::redrawTimerFired): 29 * svg/graphics/SVGImageCache.h: 30 (SVGImageCache): 31 1 32 2012-03-13 Max Vujovic <mvujovic@adobe.com> 2 33 -
trunk/Source/WebCore/page/FrameView.cpp
r110469 r110581 139 139 , m_inProgrammaticScroll(false) 140 140 , m_deferredRepaintTimer(this, &FrameView::deferredRepaintTimerFired) 141 , m_disableRepaints(0)142 141 , m_isTrackingRepaints(false) 143 142 , m_shouldUpdateWhileOffscreen(true) … … 246 245 m_firstVisuallyNonEmptyLayoutCallbackPending = true; 247 246 m_maintainScrollPositionAnchor = 0; 248 m_disableRepaints = 0;249 247 } 250 248 … … 1757 1755 { 1758 1756 ASSERT(!m_frame->ownerElement()); 1759 1757 1760 1758 if (m_isTrackingRepaints) { 1761 1759 IntRect repaintRect = r; … … 1783 1781 m_repaintRects[0].unite(paintRect); 1784 1782 m_repaintCount++; 1785 1786 if (!m_deferringRepaints) 1787 startDeferredRepaintTimer(delay); 1788 1783 1784 if (!m_deferringRepaints && !m_deferredRepaintTimer.isActive()) 1785 m_deferredRepaintTimer.startOneShot(delay); 1789 1786 return; 1790 1787 } … … 1839 1836 } 1840 1837 1838 1841 1839 void FrameView::endDeferredRepaints() 1842 1840 { … … 1851 1849 if (--m_deferringRepaints) 1852 1850 return; 1851 1852 if (m_deferredRepaintTimer.isActive()) 1853 return; 1853 1854 1854 1855 if (double delay = adjustedDeferredRepaintDelay()) { 1855 startDeferredRepaintTimer(delay);1856 m_deferredRepaintTimer.startOneShot(delay); 1856 1857 return; 1857 1858 } 1858 1859 1859 1860 doDeferredRepaints(); 1860 }1861 1862 void FrameView::startDeferredRepaintTimer(double delay)1863 {1864 if (m_deferredRepaintTimer.isActive())1865 return;1866 1867 if (m_disableRepaints)1868 return;1869 1870 m_deferredRepaintTimer.startOneShot(delay);1871 1861 } 1872 1862 … … 1887 1877 void FrameView::doDeferredRepaints() 1888 1878 { 1889 if (m_disableRepaints)1890 return;1891 1892 1879 ASSERT(!m_deferringRepaints); 1893 1880 if (!shouldUpdate()) { … … 1948 1935 { 1949 1936 doDeferredRepaints(); 1950 } 1951 1952 void FrameView::beginDisableRepaints() 1953 { 1954 m_disableRepaints++; 1955 } 1956 1957 void FrameView::endDisableRepaints() 1958 { 1959 ASSERT(m_disableRepaints > 0); 1960 m_disableRepaints--; 1961 } 1937 } 1962 1938 1963 1939 void FrameView::layoutTimerFired(Timer<FrameView>*) -
trunk/Source/WebCore/page/FrameView.h
r110469 r110581 202 202 void endDeferredRepaints(); 203 203 void checkStopDelayingDeferredRepaints(); 204 void startDeferredRepaintTimer(double delay);205 204 void resetDeferredRepaintDelay(); 206 207 void beginDisableRepaints();208 void endDisableRepaints();209 bool repaintsDisabled() { return m_disableRepaints > 0; }210 205 211 206 #if ENABLE(DASHBOARD_SUPPORT) … … 472 467 double m_deferredRepaintDelay; 473 468 double m_lastPaintTime; 474 475 unsigned m_disableRepaints; 476 469 477 470 bool m_isTrackingRepaints; // Used for testing. 478 471 Vector<IntRect> m_trackedRepaintRects; -
trunk/Source/WebCore/rendering/RenderView.cpp
r110469 r110581 299 299 if (!m_frameView) 300 300 return false; 301 302 if (m_frameView->repaintsDisabled()) 303 return false; 304 301 305 302 return true; 306 303 } -
trunk/Source/WebCore/svg/graphics/SVGImage.cpp
r110469 r110581 178 178 ASSERT(observer); 179 179 180 // Temporarily reset image observer, we don't want to receive any changeInRect() calls due t o this relayout.180 // Temporarily reset image observer, we don't want to receive any changeInRect() calls due this relayout. 181 181 setImageObserver(0); 182 183 // Disable repainting; we don't want deferred repaints to schedule any timers due to this relayout.184 frame->view()->beginDisableRepaints();185 186 182 renderer->setContainerSize(size); 187 183 frame->view()->resize(this->size()); 188 189 184 if (zoom != 1) 190 185 frame->setPageZoomFactor(zoom); … … 208 203 frame->view()->layout(); 209 204 210 setImageObserver(observer); 211 212 frame->view()->endDisableRepaints(); 205 setImageObserver(observer); 213 206 } 214 207 … … 218 211 return; 219 212 220 FrameView* view = frameView();213 FrameView* view = m_page->mainFrame()->view(); 221 214 222 215 GraphicsContextStateSaver stateSaver(*context); … … 261 254 return 0; 262 255 return toRenderBox(rootElement->renderer()); 263 }264 265 FrameView* SVGImage::frameView() const266 {267 if (!m_page)268 return 0;269 270 return m_page->mainFrame()->view();271 256 } 272 257 -
trunk/Source/WebCore/svg/graphics/SVGImage.h
r110469 r110581 35 35 namespace WebCore { 36 36 37 class FrameView;38 37 class ImageBuffer; 39 38 class Page; … … 55 54 void drawSVGToImageBuffer(ImageBuffer*, const IntSize&, float zoom, ShouldClearBuffer); 56 55 RenderBox* embeddedContentBox() const; 57 FrameView* frameView() const;58 56 59 57 virtual bool isSVGImage() const { return true; } -
trunk/Source/WebCore/svg/graphics/SVGImageCache.cpp
r110469 r110581 22 22 23 23 #if ENABLE(SVG) 24 #include "FrameView.h"25 24 #include "GraphicsContext.h" 26 25 #include "ImageBuffer.h" … … 83 82 it->second.imageNeedsUpdate = true; 84 83 85 // If we're in the middle of layout, start redrawing dirty 86 // images on a timer; otherwise it's safe to draw immediately. 87 88 FrameView* frameView = m_svgImage->frameView(); 89 if (frameView && frameView->needsLayout()) { 90 if (!m_redrawTimer.isActive()) 91 m_redrawTimer.startOneShot(0); 92 } else 93 redraw(); 84 // Start redrawing dirty images with a timer, as imageContentChanged() may be called 85 // by the FrameView of the SVGImage which is currently in FrameView::layout(). 86 if (!m_redrawTimer.isActive()) 87 m_redrawTimer.startOneShot(0); 94 88 } 95 89 96 void SVGImageCache::redraw ()90 void SVGImageCache::redrawTimerFired(Timer<SVGImageCache>*) 97 91 { 98 92 ImageDataMap::iterator end = m_imageDataMap.end(); … … 110 104 ASSERT(m_svgImage->imageObserver()); 111 105 m_svgImage->imageObserver()->animationAdvanced(m_svgImage); 112 }113 114 void SVGImageCache::redrawTimerFired(Timer<SVGImageCache>*)115 {116 redraw();117 106 } 118 107 -
trunk/Source/WebCore/svg/graphics/SVGImageCache.h
r110469 r110581 71 71 private: 72 72 SVGImageCache(SVGImage*); 73 void redraw();74 73 void redrawTimerFired(Timer<SVGImageCache>*); 75 74
Note: See TracChangeset
for help on using the changeset viewer.