Title: [109162] trunk/Source/WebCore
Revision
109162
Author
[email protected]
Date
2012-02-28 15:53:12 -0800 (Tue, 28 Feb 2012)

Log Message

Unreviewed, rolling out r108834.
http://trac.webkit.org/changeset/108834
https://bugs.webkit.org/show_bug.cgi?id=79840

Seems to cause a number of crashes under
FrameView::doDeferredRepaints (Requested by jamesr__ on
#webkit).

Patch by Sheriff Bot <[email protected]> on 2012-02-28

* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::draw):
* svg/graphics/SVGImage.h:
* svg/graphics/SVGImageCache.cpp:
(WebCore::SVGImageCache::imageContentChanged):
(WebCore::SVGImageCache::redrawTimerFired):
* svg/graphics/SVGImageCache.h:
(SVGImageCache):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (109161 => 109162)


--- trunk/Source/WebCore/ChangeLog	2012-02-28 23:44:56 UTC (rev 109161)
+++ trunk/Source/WebCore/ChangeLog	2012-02-28 23:53:12 UTC (rev 109162)
@@ -1,3 +1,22 @@
+2012-02-28  Sheriff Bot  <[email protected]>
+
+        Unreviewed, rolling out r108834.
+        http://trac.webkit.org/changeset/108834
+        https://bugs.webkit.org/show_bug.cgi?id=79840
+
+        Seems to cause a number of crashes under
+        FrameView::doDeferredRepaints (Requested by jamesr__ on
+        #webkit).
+
+        * svg/graphics/SVGImage.cpp:
+        (WebCore::SVGImage::draw):
+        * svg/graphics/SVGImage.h:
+        * svg/graphics/SVGImageCache.cpp:
+        (WebCore::SVGImageCache::imageContentChanged):
+        (WebCore::SVGImageCache::redrawTimerFired):
+        * svg/graphics/SVGImageCache.h:
+        (SVGImageCache):
+
 2012-02-29  Mario Sanchez Prada  <[email protected]>
 
         [GTK] Add support for nested event loops in RunLoop

Modified: trunk/Source/WebCore/svg/graphics/SVGImage.cpp (109161 => 109162)


--- trunk/Source/WebCore/svg/graphics/SVGImage.cpp	2012-02-28 23:44:56 UTC (rev 109161)
+++ trunk/Source/WebCore/svg/graphics/SVGImage.cpp	2012-02-28 23:53:12 UTC (rev 109162)
@@ -210,7 +210,7 @@
     if (!m_page)
         return;
 
-    FrameView* view = frameView();
+    FrameView* view = m_page->mainFrame()->view();
 
     GraphicsContextStateSaver stateSaver(*context);
     context->setCompositeOperation(compositeOp);
@@ -255,14 +255,6 @@
     return toRenderBox(rootElement->renderer());
 }
 
-FrameView* SVGImage::frameView() const
-{
-    if (!m_page)
-        return 0;
-
-    return m_page->mainFrame()->view();
-}
-
 bool SVGImage::hasRelativeWidth() const
 {
     if (!m_page)

Modified: trunk/Source/WebCore/svg/graphics/SVGImage.h (109161 => 109162)


--- trunk/Source/WebCore/svg/graphics/SVGImage.h	2012-02-28 23:44:56 UTC (rev 109161)
+++ trunk/Source/WebCore/svg/graphics/SVGImage.h	2012-02-28 23:53:12 UTC (rev 109162)
@@ -34,7 +34,6 @@
 
 namespace WebCore {
 
-class FrameView;
 class ImageBuffer;
 class Page;
 class RenderBox;
@@ -54,7 +53,6 @@
 
     void drawSVGToImageBuffer(ImageBuffer*, const IntSize&, float zoom, ShouldClearBuffer);
     RenderBox* embeddedContentBox() const;
-    FrameView* frameView() const;
 
     virtual bool isSVGImage() const { return true; }
     virtual IntSize size() const;

Modified: trunk/Source/WebCore/svg/graphics/SVGImageCache.cpp (109161 => 109162)


--- trunk/Source/WebCore/svg/graphics/SVGImageCache.cpp	2012-02-28 23:44:56 UTC (rev 109161)
+++ trunk/Source/WebCore/svg/graphics/SVGImageCache.cpp	2012-02-28 23:53:12 UTC (rev 109162)
@@ -21,7 +21,6 @@
 #include "SVGImageCache.h"
 
 #if ENABLE(SVG)
-#include "FrameView.h"
 #include "GraphicsContext.h"
 #include "ImageBuffer.h"
 #include "RenderSVGRoot.h"
@@ -82,18 +81,13 @@
     for (ImageDataMap::iterator it = m_imageDataMap.begin(); it != end; ++it)
         it->second.imageNeedsUpdate = true;
 
-    // If we're in the middle of layout, start redrawing dirty
-    // images on a timer; otherwise it's safe to draw immediately.
-    
-    FrameView* frameView = m_svgImage->frameView();
-    if (frameView && frameView->needsLayout()) {
-        if (!m_redrawTimer.isActive())
-            m_redrawTimer.startOneShot(0);
-    } else
-        redraw();
+    // Start redrawing dirty images with a timer, as imageContentChanged() may be called
+    // by the FrameView of the SVGImage which is currently in FrameView::layout().
+    if (!m_redrawTimer.isActive())
+        m_redrawTimer.startOneShot(0);
 }
 
-void SVGImageCache::redraw()
+void SVGImageCache::redrawTimerFired(Timer<SVGImageCache>*)
 {
     ImageDataMap::iterator end = m_imageDataMap.end();
     for (ImageDataMap::iterator it = m_imageDataMap.begin(); it != end; ++it) {
@@ -111,11 +105,6 @@
     m_svgImage->imageObserver()->animationAdvanced(m_svgImage);
 }
 
-void SVGImageCache::redrawTimerFired(Timer<SVGImageCache>*)
-{
-    redraw();
-}
-
 Image* SVGImageCache::lookupOrCreateBitmapImageForRenderer(const RenderObject* renderer)
 {
     ASSERT(renderer);

Modified: trunk/Source/WebCore/svg/graphics/SVGImageCache.h (109161 => 109162)


--- trunk/Source/WebCore/svg/graphics/SVGImageCache.h	2012-02-28 23:44:56 UTC (rev 109161)
+++ trunk/Source/WebCore/svg/graphics/SVGImageCache.h	2012-02-28 23:53:12 UTC (rev 109162)
@@ -70,7 +70,6 @@
 
 private:
     SVGImageCache(SVGImage*);
-    void redraw();
     void redrawTimerFired(Timer<SVGImageCache>*);
 
     struct ImageData {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to