+2005-09-27 Wim Taymans <wim@fluendo.com>
+
+ * gst/gstbin.c: (bin_element_is_semi_sink), (gst_bin_change_state):
+ use gst_object_has_ancestor().
+
+ * gst/gstobject.c: (gst_object_has_ancestor):
+ * gst/gstobject.h:
+ gst_object_has_ancestor() copied from gstbin.c as it is a
+ usefull function.
+
+ * tests/instantiate/create.c: (create_all_elements):
+ * tests/lat.c: (handoff_src), (handoff_sink):
+ * tests/sched/runxml.c: (main):
+ * tests/seeking/seeking1.c: (main):
+ * tests/threadstate/threadstate2.c: (bus_handler), (timeout_func),
+ (main):
+ Fix compilation of some tests.
+
2005-09-27 Tim-Philipp Müller <tim at centricular dot net>
* gst/gsterror.h:
return is_sink ? 0 : 1;
}
-/* check if object has the given ancestor somewhere up in
- * the hierarchy
- */
-static gboolean
-has_ancestor (GstObject * object, GstObject * ancestor)
-{
- GstObject *parent;
- gboolean result = FALSE;
-
- if (object == NULL)
- return FALSE;
-
- if (object == ancestor)
- return TRUE;
-
- parent = gst_object_get_parent (object);
- result = has_ancestor (parent, ancestor);
- if (parent)
- gst_object_unref (parent);
-
- return result;
-}
-
/* returns 0 when TRUE because this is a GCompareFunc.
* This function returns elements that have no connected srcpads and
* are therefore not reachable from a real sink. */
GST_DEBUG ("looking at pad %p", pads->data);
if ((peer = gst_pad_get_peer (GST_PAD_CAST (pads->data)))) {
connected_src =
- has_ancestor (GST_OBJECT_CAST (peer), GST_OBJECT_CAST (bin));
+ gst_object_has_ancestor (GST_OBJECT_CAST (peer),
+ GST_OBJECT_CAST (bin));
gst_object_unref (peer);
if (connected_src) {
break;
}
/**
+ * gst_object_has_ancestor:
+ * @object: GstObject to check
+ * @ancestor: GstObject to check as ancestor
+ *
+ * Check if @object has an ancestor @ancestor somewhere up in
+ * the hierarchy.
+ *
+ * Returns: TRUE if @ancestor is an ancestor of @object.
+ *
+ * MT safe. Grabs and releases the object's locks.
+ */
+gboolean
+gst_object_has_ancestor (GstObject * object, GstObject * ancestor)
+{
+ GstObject *parent;
+ gboolean result = FALSE;
+
+ if (object == NULL)
+ return FALSE;
+
+ if (object == ancestor)
+ return TRUE;
+
+ parent = gst_object_get_parent (object);
+ result = gst_object_has_ancestor (parent, ancestor);
+ if (parent)
+ gst_object_unref (parent);
+
+ return result;
+}
+
+/**
* gst_object_check_uniqueness:
* @list: a list of #GstObject to check through
* @name: the name to search for
gboolean gst_object_set_parent (GstObject *object, GstObject *parent);
GstObject* gst_object_get_parent (GstObject *object);
void gst_object_unparent (GstObject *object);
+gboolean gst_object_has_ancestor (GstObject *object, GstObject *ancestor);
void gst_object_default_deep_notify (GObject *object, GstObject *orig,
GParamSpec *pspec, gchar **excluded_props);
const GList *elements;
GstElementFactory *factory;
GstElement *element;
+ GstRegistry *registry;
+
+ registry = gst_registry_get_default ();
/* get list of elements */
- for (elements = gst_registry_pool_feature_list (GST_TYPE_ELEMENT_FACTORY);
+ for (elements =
+ gst_registry_get_feature_list (registry, GST_TYPE_ELEMENT_FACTORY);
elements != NULL; elements = elements->next) {
factory = (GstElementFactory *) elements->data;
if ((element = gst_element_factory_create (factory, "test"))) {
void
handoff_src (GstElement * src, GstBuffer * buf, gpointer user_data)
{
- gst_trace_read_tsc (&GST_BUFFER_TIMESTAMP (buf));
+ gst_trace_read_tsc ((gint64 *) & GST_BUFFER_TIMESTAMP (buf));
}
void
guint64 end, d, avg;
guint avg_ns;
- gst_trace_read_tsc (&end);
+ gst_trace_read_tsc ((gint64 *) & end);
d = end - GST_BUFFER_TIMESTAMP (buf);
if (d > max)
max = d;
g_print ("\n *** using testfile %s\n", argv[1]);
xml = gst_xml_new ();
- gst_xml_parse_file (xml, argv[1], NULL);
+ gst_xml_parse_file (xml, (const guchar *) argv[1], NULL);
toplevelelements = gst_xml_get_topelements (xml);
g_print ("doing segment seek from 5 to 10\n");
gst_pad_send_event (pad,
- gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
- GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH, 5, 10));
+ gst_event_new_seek (1.0, GST_FORMAT_DEFAULT,
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SEGMENT,
+ GST_SEEK_TYPE_SET, 5, GST_SEEK_TYPE_SET, 10));
format = GST_FORMAT_DEFAULT;
("doing segment seek from 50 to 55 with looping (2 times), then 20 to 25 without looping\n");
looping = 3;
- event = gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
- GST_SEEK_METHOD_SET |
- GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SEGMENT_LOOP, 50, 55);
+ event =
+ gst_event_new_seek (1.0, GST_FORMAT_DEFAULT,
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SEGMENT,
+ GST_SEEK_TYPE_SET, 50, GST_SEEK_TYPE_SET, 55);
gst_pad_send_event (pad, event);
g_signal_connect (G_OBJECT (gst_element_get_pad (fakesink, "sink")),
g_timeout_add (2 * 1000, (GSourceFunc) timeout_func, loop);
bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
- gst_bus_add_watch (bus, (GstBusHandler) bus_handler, pipeline);
+ gst_bus_add_watch (bus, GST_MESSAGE_ANY, (GstBusFunc) bus_handler, pipeline);
for (x = 0; x < 10; x++) {
g_print ("playing %d\n", x);