Fix for <rdar://problem/5086400>, images scrolled offscreen continue to anima...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 24 Mar 2007 10:16:11 +0000 (10:16 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 24 Mar 2007 10:16:11 +0000 (10:16 +0000)
        halt animations when images were no longer visible.

        Reviewed by mjs, olliej

        * platform/graphics/BitmapImage.cpp:
        (WebCore::BitmapImage::advanceAnimation):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@20467 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/graphics/BitmapImage.cpp

index 35acdd715e91caf25ebe36b9d4e209dee7c7271f..0b90e7bd1b2cf6109924931c3bf6c1afebfd778c 100644 (file)
@@ -1,3 +1,13 @@
+2007-03-24  David Hyatt  <hyatt@apple.com>
+
+        Fix for <rdar://problem/5086400>, images scrolled offscreen continue to animate.  Safari 2 would
+        halt animations when images were no longer visible.
+
+        Reviewed by mjs, olliej
+
+        * platform/graphics/BitmapImage.cpp:
+        (WebCore::BitmapImage::advanceAnimation):
+
 2007-03-24  David Hyatt  <hyatt@apple.com>
 
         Fix for <rdar://problem/508328>, sluggish text entry in search field.  Make sure
index 6223000e40a3999fdde9c8844c9e3e521135dd2c..9bcba1921716304cc0bcb5ad546d0bdad136bca6 100644 (file)
@@ -271,12 +271,10 @@ void BitmapImage::advanceAnimation(Timer<BitmapImage>* timer)
         frameAtIndex(m_currentFrame);
     }
     
-    // Kick off a timer to move to the next frame, but only if the current frame is complete.
-    if (!m_source.frameIsCompleteAtIndex(m_currentFrame))
-        return;
-    
-    m_frameTimer = new Timer<BitmapImage>(this, &BitmapImage::advanceAnimation);
-    m_frameTimer->startOneShot(frameDurationAtIndex(m_currentFrame));
+    // We do not advance the animation explicitly.  We rely on a subsequent draw of the image
+    // to force a request for the next frame via startAnimation().  This allows images that move offscreen while
+    // scrolling to stop animating (thus saving memory from additional decoded frames and
+    // CPU time spent doing the decoding).
 }
 
 }