From 51fcdcad725c436e668a6ba097fab7a2149b7501 Mon Sep 17 00:00:00 2001
From: Benjamin Otte <otte@gnome.org>
Date: Wed, 14 Oct 2009 20:23:47 +0200
Subject: [PATCH 12/12] Emit size_changed() when we get a buffer with a new size.

---
 .../graphics/gtk/MediaPlayerPrivateGStreamer.cpp   |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
index 9dc402a..8930aa4 100644
--- a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
+++ b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
@@ -108,6 +108,14 @@ void mediaPlayerPrivateRepaintCallback(WebKitVideoSink*, GstBuffer *buffer, Medi
 {
     g_return_if_fail(GST_IS_BUFFER(buffer));
     gst_buffer_replace(&playerPrivate->m_buffer, buffer);
+    // Check if size has changed
+    GstCairoFormat *format = gst_cairo_format_new(GST_BUFFER_CAPS(buffer));
+    IntSize newSize(gst_cairo_format_get_width(format), gst_cairo_format_get_height(format));
+    if (newSize != playerPrivate->m_size) {
+      playerPrivate->m_size = newSize;
+      playerPrivate->m_player->sizeChanged();
+    }
+    gst_cairo_format_free(format);
     playerPrivate->repaint();
 }
 
@@ -620,7 +628,6 @@ void MediaPlayerPrivate::loadingFailed(MediaPlayer::NetworkState error)
 
 void MediaPlayerPrivate::setSize(const IntSize& size)
 {
-    m_size = size;
 }
 
 void MediaPlayerPrivate::setVisible(bool visible)
-- 
1.6.3.3

