[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.17-1283-gcf603cf
philn at webkit.org
philn at webkit.org
Tue Jan 5 23:48:51 UTC 2010
The following commit has been merged in the webkit-1.1 branch:
commit 1bfa365142e3de073aadc58e9e633a269782e04e
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