[rhythmbox] add 'prepare-source' signal to player backends



commit 02682c1c6bfc42142234b821108edcf9e7f2ef9e
Author: Jonathan Matthew <jonathan d14n org>
Date:   Tue Jun 2 20:23:09 2009 +1000

    add 'prepare-source' signal to player backends
    
    This hook allows plugins to set any properties that may be required on
    the GStreamer source element that cannot be set through the URI.  The
    only current example of this is setting the device property on cdda
    source elements.
---
 backends/gstreamer/rb-player-gst-xfade.c |   11 +++++++++++
 backends/gstreamer/rb-player-gst-xfade.h |    3 +++
 backends/gstreamer/rb-player-gst.c       |   11 +++++++++++
 backends/gstreamer/rb-player-gst.h       |    3 +++
 lib/rb-marshal.list                      |    1 +
 5 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/backends/gstreamer/rb-player-gst-xfade.c b/backends/gstreamer/rb-player-gst-xfade.c
index 0a30be4..dc996d3 100644
--- a/backends/gstreamer/rb-player-gst-xfade.c
+++ b/backends/gstreamer/rb-player-gst-xfade.c
@@ -240,6 +240,7 @@ enum
 
 enum
 {
+	PREPARE_SOURCE,
 	CAN_REUSE_STREAM,
 	REUSE_STREAM,
 	MISSING_PLUGINS,
@@ -668,6 +669,16 @@ rb_player_gst_xfade_class_init (RBPlayerGstXFadeClass *klass)
 							      GST_TYPE_BUS,
 							      G_PARAM_READABLE));
 
+	signals[PREPARE_SOURCE] =
+		g_signal_new ("prepare-source",
+			      G_OBJECT_CLASS_TYPE (object_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (RBPlayerGstXFadeClass, prepare_source),
+			      NULL, NULL,
+			      rb_marshal_VOID__STRING_OBJECT,
+			      G_TYPE_NONE,
+			      2,
+			      G_TYPE_STRING, GST_TYPE_ELEMENT);
 	signals[CAN_REUSE_STREAM] =
 		g_signal_new ("can-reuse-stream",
 			      G_OBJECT_CLASS_TYPE (object_class),
diff --git a/backends/gstreamer/rb-player-gst-xfade.h b/backends/gstreamer/rb-player-gst-xfade.h
index b1749c9..db63fb1 100644
--- a/backends/gstreamer/rb-player-gst-xfade.h
+++ b/backends/gstreamer/rb-player-gst-xfade.h
@@ -53,6 +53,9 @@ typedef struct
 {
 	GObjectClass obj_class;
 
+	void (*prepare_source) (RBPlayerGstXFade *player,
+				const char *stream_uri,
+				GstElement *source);
 	gboolean (*can_reuse_stream) (RBPlayerGstXFade *player,
 				      const char *new_uri,
 				      const char *stream_uri,
diff --git a/backends/gstreamer/rb-player-gst.c b/backends/gstreamer/rb-player-gst.c
index 250c786..6657341 100644
--- a/backends/gstreamer/rb-player-gst.c
+++ b/backends/gstreamer/rb-player-gst.c
@@ -73,6 +73,7 @@ enum
 
 enum
 {
+	PREPARE_SOURCE,
 	CAN_REUSE_STREAM,
 	REUSE_STREAM,
 	MISSING_PLUGINS,
@@ -1374,6 +1375,16 @@ rb_player_gst_class_init (RBPlayerGstClass *klass)
 							    64, MAX_NETWORK_BUFFER_SIZE, 128,
 							    G_PARAM_READWRITE));
 
+	signals[PREPARE_SOURCE] =
+		g_signal_new ("prepare-source",
+			      G_OBJECT_CLASS_TYPE (object_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (RBPlayerGstClass, prepare_source),
+			      NULL, NULL,
+			      rb_marshal_VOID__STRING_OBJECT,
+			      G_TYPE_NONE,
+			      2,
+			      G_TYPE_STRING, GST_TYPE_ELEMENT);
 	signals[CAN_REUSE_STREAM] =
 		g_signal_new ("can-reuse-stream",
 			      G_OBJECT_CLASS_TYPE (object_class),
diff --git a/backends/gstreamer/rb-player-gst.h b/backends/gstreamer/rb-player-gst.h
index 5decc55..03e17e7 100644
--- a/backends/gstreamer/rb-player-gst.h
+++ b/backends/gstreamer/rb-player-gst.h
@@ -48,6 +48,9 @@ struct _RBPlayerGstClass
 {
 	GObjectClass obj_class;
 
+	void (*prepare_source) (RBPlayerGst *player,
+				const char *stream_uri,
+				GstElement *source);
 	gboolean (*can_reuse_stream) (RBPlayerGst *player,
 				      const char *new_uri,
 				      const char *stream_uri,
diff --git a/lib/rb-marshal.list b/lib/rb-marshal.list
index 17068c4..32db07b 100644
--- a/lib/rb-marshal.list
+++ b/lib/rb-marshal.list
@@ -35,6 +35,7 @@ VOID:POINTER,UINT
 VOID:POINTER,ULONG
 VOID:STRING,DOUBLE
 VOID:STRING,INT
+VOID:STRING,OBJECT
 VOID:STRING,POINTER
 VOID:STRING,STRING
 VOID:STRING,STRING,OBJECT



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]