[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

philn at webkit.org philn at webkit.org
Thu Apr 8 00:35:05 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 3ba2004bfb4a6065d77ca99fa1b57b214970b5e4
Author: philn at webkit.org <philn at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Dec 14 10:01:33 2009 +0000

    emit volumeChanged and durationChanged upon notification from GStreamer.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52085 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index bbd4b73..8ffcdae 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2009-11-11  Philippe Normand  <pnormand at igalia.com>
+
+        Reviewed by Oliver Hunt.
+
+        [GStreamer] Should emit {networkState,readyState,volume,time,size,rate,duration}Changed signals
+        https://bugs.webkit.org/show_bug.cgi?id=30377
+
+        Emit volumeChanged and durationChanged upon notification from
+        GStreamer.
+
+        * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::mediaPlayerPrivateMessageCallback):
+        (WebCore::mediaPlayerPrivateVolumeCallback):
+        (WebCore::notify_volume_idle_cb):
+        (WebCore::MediaPlayerPrivate::didEnd):
+        (WebCore::MediaPlayerPrivate::durationChanged):
+        (WebCore::MediaPlayerPrivate::createGSTPlayBin):
+        * platform/graphics/gtk/MediaPlayerPrivateGStreamer.h:
+
 2009-12-13  Geoffrey Garen  <ggaren at apple.com>
 
         Reviewed by Sam Weinig.
diff --git a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
index a023dae..fb79374 100644
--- a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
+++ b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
@@ -91,6 +91,10 @@ gboolean mediaPlayerPrivateMessageCallback(GstBus* bus, GstMessage* message, gpo
         gst_message_parse_buffering(message, &percent);
         LOG_VERBOSE(Media, "Buffering %d", percent);
         break;
+    case GST_MESSAGE_DURATION:
+        LOG_VERBOSE(Media, "Duration changed");
+        mp->durationChanged();
+        break;
     default:
         LOG_VERBOSE(Media, "Unhandled GStreamer message type: %s",
                     GST_MESSAGE_TYPE_NAME(message));
@@ -99,6 +103,17 @@ gboolean mediaPlayerPrivateMessageCallback(GstBus* bus, GstMessage* message, gpo
     return true;
 }
 
+static gboolean notify_volume_idle_cb(MediaPlayer* mp)
+{
+    mp->volumeChanged();
+    return FALSE;
+}
+
+static void mediaPlayerPrivateVolumeCallback(GObject *element, GParamSpec *pspec, MediaPlayer* mp)
+{
+    g_idle_add((GSourceFunc) notify_volume_idle_cb, mp);
+}
+
 static float playbackPosition(GstElement* playbin)
 {
 
@@ -663,14 +678,14 @@ void MediaPlayerPrivate::timeChanged()
     m_player->timeChanged();
 }
 
-void MediaPlayerPrivate::volumeChanged()
+void MediaPlayerPrivate::didEnd()
 {
-    m_player->volumeChanged();
+    timeChanged();
 }
 
-void MediaPlayerPrivate::didEnd()
+void MediaPlayerPrivate::durationChanged()
 {
-    timeChanged();
+    m_player->durationChanged();
 }
 
 void MediaPlayerPrivate::loadingFailed(MediaPlayer::NetworkState error)
@@ -890,6 +905,8 @@ void MediaPlayerPrivate::createGSTPlayBin(String url)
     g_object_set(G_OBJECT(m_playBin), "uri", url.utf8().data(),
         "volume", static_cast<double>(m_player->volume()), NULL);
 
+    g_signal_connect(G_OBJECT(m_playBin), "notify::volume", G_CALLBACK(mediaPlayerPrivateVolumeCallback), m_player);
+
     m_videoSink = webkit_video_sink_new();
 
     g_object_ref_sink(m_videoSink);
diff --git a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.h b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.h
index 6ab8edb..91c97fc 100644
--- a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.h
+++ b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.h
@@ -39,14 +39,14 @@ typedef struct _GstBus GstBus;
 
 namespace WebCore {
 
-    class GraphicsContext;
-    class IntSize;
-    class IntRect;
-    class String;
+class GraphicsContext;
+class IntSize;
+class IntRect;
+class String;
 
-    gboolean mediaPlayerPrivateMessageCallback(GstBus* bus, GstMessage* message, gpointer data);
+gboolean mediaPlayerPrivateMessageCallback(GstBus* bus, GstMessage* message, gpointer data);
 
-    class MediaPlayerPrivate : public MediaPlayerPrivateInterface {
+class MediaPlayerPrivate : public MediaPlayerPrivateInterface {
         friend gboolean mediaPlayerPrivateMessageCallback(GstBus* bus, GstMessage* message, gpointer data);
         friend void mediaPlayerPrivateRepaintCallback(WebKitVideoSink*, GstBuffer *buffer, MediaPlayerPrivate* playerPrivate);
 
@@ -92,8 +92,8 @@ namespace WebCore {
             void loadStateChanged();
             void sizeChanged();
             void timeChanged();
-            void volumeChanged();
             void didEnd();
+            void durationChanged();
             void loadingFailed(MediaPlayer::NetworkState);
 
             void repaint();

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list