GstPad *sinkpad;
gboolean result = FALSE;
gboolean done = FALSE;
+ GValue value = { 0, };
funnel = gst_pad_get_parent_element (pad);
if (G_UNLIKELY (funnel == NULL)) {
iter = gst_element_iterate_sink_pads (funnel);
while (!done) {
- switch (gst_iterator_next (iter, (gpointer) & sinkpad)) {
+ switch (gst_iterator_next (iter, &value)) {
case GST_ITERATOR_OK:
+ sinkpad = g_value_get_object (&value);
gst_event_ref (event);
result |= gst_pad_push_event (sinkpad, event);
- gst_object_unref (sinkpad);
+ g_value_reset (&value);
break;
case GST_ITERATOR_RESYNC:
gst_iterator_resync (iter);
break;
}
}
+ g_value_unset (&value);
gst_iterator_free (iter);
gst_object_unref (funnel);
gst_event_unref (event);
}
static void
-reset_pad (gpointer data, gpointer user_data)
+reset_pad (const GValue * data, gpointer user_data)
{
- GstPad *pad = data;
+ GstPad *pad = g_value_get_object (data);
GstFunnelPad *fpad = GST_FUNNEL_PAD_CAST (pad);
GST_OBJECT_LOCK (pad);
gst_funnel_pad_reset (fpad);
GST_OBJECT_UNLOCK (pad);
- gst_object_unref (pad);
}
static GstStateChangeReturn
GstInputSelector *sel;
GstPad *otherpad;
GstIterator *it;
+ GValue val = { 0, };
sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
if (G_UNLIKELY (sel == NULL))
return NULL;
otherpad = gst_input_selector_get_linked_pad (sel, pad, TRUE);
- it = gst_iterator_new_single (GST_TYPE_PAD, otherpad,
- (GstCopyFunction) gst_object_ref, (GFreeFunc) gst_object_unref);
+ g_value_init (&val, GST_TYPE_PAD);
+ g_value_set_object (&val, otherpad);
+ it = gst_iterator_new_single (GST_TYPE_PAD, &val);
+ g_value_unset (&val);
if (otherpad)
gst_object_unref (otherpad);
GstPad *opad;
GstSingleQueue *squeue;
GstMultiQueue *mq = GST_MULTI_QUEUE (gst_pad_get_parent (pad));
+ GValue val = { 0, };
GST_MULTI_QUEUE_MUTEX_LOCK (mq);
squeue = gst_pad_get_element_private (pad);
else
goto out;
- it = gst_iterator_new_single (GST_TYPE_PAD, opad,
- (GstCopyFunction) gst_object_ref, (GFreeFunc) gst_object_unref);
+ g_value_init (&val, GST_TYPE_PAD);
+ g_value_set_object (&val, opad);
+ it = gst_iterator_new_single (GST_TYPE_PAD, &val);
+ g_value_unset (&val);
gst_object_unref (opad);
GstTee *tee;
gboolean res, done;
GstIterator *it;
+ GValue item = { 0, };
tee = GST_TEE_CAST (GST_PAD_PARENT (pad));
res = TRUE;
done = FALSE;
while (!done && res) {
- gpointer item;
-
switch (gst_iterator_next (it, &item)) {
case GST_ITERATOR_OK:
- res &= gst_pad_peer_accept_caps (GST_PAD_CAST (item), caps);
- gst_object_unref (item);
+ res &= gst_pad_peer_accept_caps (g_value_get_object (&item), caps);
+ g_value_reset (&item);
break;
case GST_ITERATOR_RESYNC:
res = TRUE;
break;
}
}
+ g_value_unset (&item);
gst_iterator_free (it);
return res;
}
static void
-gst_tee_push_eos (GstPad * pad, GstTee * tee)
+gst_tee_push_eos (const GValue * vpad, GstTee * tee)
{
+ GstPad *pad = g_value_get_object (vpad);
+
if (pad != tee->pull_pad)
gst_pad_push_event (pad, gst_event_new_eos ());
- gst_object_unref (pad);
}
static void
GstIterator *iter;
iter = gst_element_iterate_src_pads (GST_ELEMENT (tee));
- gst_iterator_foreach (iter, (GFunc) gst_tee_push_eos, tee);
+ gst_iterator_foreach (iter, (GstIteratorForeachFunction) gst_tee_push_eos,
+ tee);
gst_iterator_free (iter);
}