summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2009-04-20 09:49:32 +0300
committerDave Robillard <dave@drobilla.net>2009-05-03 12:03:17 -0400
commit33488020a78f0b60a8524fc0b1e3f399d2cb1b2c (patch)
tree15348936518842b4589211c50036724c4f77dc79 /gst
parent7aae742e64cb0f98e3890deefcd63105dbdc148e (diff)
downloadgst-plugins-bad-33488020a78f0b60a8524fc0b1e3f399d2cb1b2c.tar.gz
gst-plugins-bad-33488020a78f0b60a8524fc0b1e3f399d2cb1b2c.tar.bz2
gst-plugins-bad-33488020a78f0b60a8524fc0b1e3f399d2cb1b2c.zip
fpsdisplay: remove iface proxy
When we get bus messages for setting the xid, we have the real sink element instance as message_src. No need to proxy the xoverlay iface therefore (autovideosink does not do it either). Also we don't need to rewrite the message src of all messages from that sink.
Diffstat (limited to 'gst')
-rw-r--r--gst/debugutils/fpsdisplaysink.c72
1 files changed, 1 insertions, 71 deletions
diff --git a/gst/debugutils/fpsdisplaysink.c b/gst/debugutils/fpsdisplaysink.c
index 4cc9da01..0768b8a2 100644
--- a/gst/debugutils/fpsdisplaysink.c
+++ b/gst/debugutils/fpsdisplaysink.c
@@ -22,7 +22,7 @@
* |[
* gst-launch videotestsrc ! fpsdisplaysink
* gst-launch videotestsrc ! fpsdisplaysink text-overlay=false
- * gst-launch filesrc location=video.avi ! decodebin2 name=d ! queue ! fpsdisplaysink d. ! queue ! fakesink sync=true
+ * gst-launch filesrc location=video.avi ! decodebin2 name=d ! queue ! fpsdisplaysink d. ! queue ! fakesink sync=true
* ]|
*/
/* FIXME:
@@ -92,64 +92,11 @@ static void fps_display_sink_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
static void fps_display_sink_dispose (GObject * object);
-static gboolean
-fps_display_sink_interface_supported (GstImplementsInterface * iface,
- GType type)
-{
- g_assert (type == GST_TYPE_X_OVERLAY);
- return TRUE;
-}
-
-static void
-fps_display_sink_interface_init (GstImplementsInterfaceClass * klass)
-{
- klass->supported = fps_display_sink_interface_supported;
-}
-
-static void
-fps_display_sink_set_xwindow_id (GstXOverlay * overlay, gulong xwindow_id)
-{
- FPSDisplaySink *self = FPS_DISPLAY_SINK (overlay);
-
- gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (self->priv->xvimagesink),
- xwindow_id);
-}
-
-static void
-fps_display_sink_expose (GstXOverlay * overlay)
-{
- FPSDisplaySink *self = FPS_DISPLAY_SINK (overlay);
-
- gst_x_overlay_expose (GST_X_OVERLAY (self->priv->xvimagesink));
-}
-
-static void
-fps_display_sink_xoverlay_init (GstXOverlayClass * iface)
-{
- iface->set_xwindow_id = fps_display_sink_set_xwindow_id;
- iface->expose = fps_display_sink_expose;
-}
-
-static void
-fps_display_sink_handle_message (GstBin * bin, GstMessage * message)
-{
- FPSDisplaySink *self = FPS_DISPLAY_SINK (bin);
-
- if (GST_MESSAGE_SRC (message) != NULL &&
- GST_MESSAGE_SRC (message) == GST_OBJECT (self->priv->xvimagesink)) {
- gst_object_unref (GST_MESSAGE_SRC (message));
- GST_MESSAGE_SRC (message) = gst_object_ref (GST_OBJECT (bin));
- }
-
- GST_BIN_CLASS (parent_class)->handle_message (bin, message);
-}
-
static void
fps_display_sink_class_init (FPSDisplaySinkClass * klass)
{
GObjectClass *gobject_klass = G_OBJECT_CLASS (klass);
GstElementClass *gstelement_klass = GST_ELEMENT_CLASS (klass);
- GstBinClass *gstbin_klass = GST_BIN_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
@@ -168,8 +115,6 @@ fps_display_sink_class_init (FPSDisplaySinkClass * klass)
gstelement_klass->change_state = fps_display_sink_change_state;
- gstbin_klass->handle_message = fps_display_sink_handle_message;
-
gst_element_class_add_pad_template (gstelement_klass,
gst_static_pad_template_get (&fps_display_sink_template));
@@ -487,24 +432,9 @@ fps_display_sink_get_type (void)
0,
(GInstanceInitFunc) fps_display_sink_init,
};
- static const GInterfaceInfo iface_info = {
- (GInterfaceInitFunc) fps_display_sink_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo overlay_info = {
- (GInterfaceInitFunc) fps_display_sink_xoverlay_init,
- NULL,
- NULL,
- };
fps_display_sink_type = g_type_register_static (GST_TYPE_BIN,
"FPSDisplaySink", &fps_display_sink_info, 0);
-
- g_type_add_interface_static (fps_display_sink_type,
- GST_TYPE_IMPLEMENTS_INTERFACE, &iface_info);
- g_type_add_interface_static (fps_display_sink_type, GST_TYPE_X_OVERLAY,
- &overlay_info);
}
return fps_display_sink_type;