Restore intrinsic size of video elements after loading poster
authorvestbo@webkit.org <vestbo@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Aug 2010 17:18:22 +0000 (17:18 +0000)
committervestbo@webkit.org <vestbo@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Aug 2010 17:18:22 +0000 (17:18 +0000)
Reviewed by Eric Carlson.

The element might already have the instrinsic size of the video, in
which case we don't want to override it witht that of the image.

* rendering/RenderVideo.cpp: call updateIntrinsicSize() to restore size

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

WebCore/ChangeLog
WebCore/rendering/RenderVideo.cpp

index 0f583e9..36b6d12 100644 (file)
@@ -1,3 +1,14 @@
+2010-08-17  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
+
+        Reviewed by Eric Carlson.
+
+        Restore intrinsic size of video elements after loading poster
+
+        The element might already have the instrinsic size of the video, in
+        which case we don't want to override it witht that of the image.
+
+        * rendering/RenderVideo.cpp: call updateIntrinsicSize() to restore size
+
 2010-08-17  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
 
         Reviewed by Steve Block.
index ab969cc..0f444b2 100644 (file)
@@ -134,13 +134,14 @@ void RenderVideo::imageChanged(WrappedImagePtr newImage, const IntRect* rect)
     RenderMedia::imageChanged(newImage, rect);
 
     // Cache the image intrinsic size so we can continue to use it to draw the image correctly
-    // even after we know the video intrisic size but aren't able to draw video frames yet
-    // (we don't want to scale the poster to the video size).
-    if (videoElement()->shouldDisplayPosterImage()) {
-        if (errorOccurred())
-            updateIntrinsicSize();
+    // even if we know the video intrinsic size but aren't able to draw video frames yet
+    // (we don't want to scale the poster to the video size without keeping aspect ratio).
+    if (videoElement()->shouldDisplayPosterImage())
         m_cachedImageSize = intrinsicSize();
-    }
+
+    // The intrinsic size is now that of the image, but in case we already had the
+    // intrinsic size of the video we call this here to restore the video size.
+    updateIntrinsicSize();
 }
 
 IntRect RenderVideo::videoBox() const