All pastes #1676130 Raw Edit

Mine

public text v1 · immutable
#1676130 ·published 2009-11-18 08:29 UTC
rendered paste body
diff --git a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
index 4f85f79..5775c71 100644
--- a/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
+++ b/WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp
@@ -99,6 +99,19 @@ gboolean mediaPlayerPrivateMessageCallback(GstBus* bus, GstMessage* message, gpo
     return true;
 }
 
+gboolean notify_mute_idle_cb(MediaPlayer* mp)
+{
+    g_printerr("changing volume\n");
+    mp->volumeChanged();
+    return FALSE;
+}
+
+static void mediaPlayerPrivateMuteCallback(GObject *element, GParamSpec *pspec, MediaPlayer* mp)
+{
+    g_printerr("mute changed\n");
+    g_idle_add((GSourceFunc) notify_mute_idle_cb, mp);
+}
+
 static float playbackPosition(GstElement* playbin)
 {
 
@@ -383,7 +396,9 @@ void MediaPlayerPrivate::setVolume(float volume)
     if (!m_playBin)
         return;
 
-    g_object_set(G_OBJECT(m_playBin), "volume", static_cast<double>(volume), NULL);
+    bool mute = static_cast<bool>(volume == 0);
+    g_object_set(G_OBJECT(m_playBin), "volume", static_cast<double>(volume),
+                 "mute", mute, NULL);
 }
 
 void MediaPlayerPrivate::setRate(float rate)
@@ -855,7 +870,10 @@ void MediaPlayerPrivate::createGSTPlayBin(String url)
     gst_object_unref(bus);
 
     g_object_set(G_OBJECT(m_playBin), "uri", url.utf8().data(),
-        "volume", static_cast<double>(m_player->volume()), NULL);
+                 "volume", static_cast<double>(m_player->volume()),
+                 "mute", false, NULL);
+
+    g_signal_connect(G_OBJECT(m_playBin), "notify::mute", G_CALLBACK(mediaPlayerPrivateMuteCallback), m_player);
 
     m_videoSink = webkit_video_sink_new();