mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
tracer: add missing hooks
Add following hooks: element-new, element-add-pad, element-remove-pad, bin-add-pre, bin-add-post, bin-remove-pre, bin-remove-post, pad-link-pre, pad-link-post, pad-unlink-pre, pad-unlink-post. https://bugzilla.gnome.org/show_bug.cgi?id=733187
This commit is contained in:
parent
0913f699e2
commit
e8d0b019b3
7 changed files with 129 additions and 10 deletions
|
@ -88,18 +88,19 @@ we can create them ad-hoc and avoid the GST_TRACE_TIMERS var.
|
|||
|
||||
Hooks (* already implemented)
|
||||
-----
|
||||
- gst_bin_add
|
||||
- gst_bin_remove
|
||||
- gst_element_add_pad
|
||||
* gst_bin_add
|
||||
* gst_bin_remove
|
||||
* gst_element_add_pad
|
||||
* gst_element_post_message
|
||||
* gst_element_query
|
||||
- gst_element_remove_pad
|
||||
- gst_pad_link
|
||||
* gst_element_remove_pad
|
||||
* gst_element_factory_make
|
||||
* gst_pad_link
|
||||
* gst_pad_pull_range
|
||||
* gst_pad_push
|
||||
* gst_pad_push_list
|
||||
* gst_pad_push_event
|
||||
- gst_pad_unlink
|
||||
* gst_pad_unlink
|
||||
|
||||
Tracer api
|
||||
----------
|
||||
|
|
|
@ -1370,7 +1370,9 @@ gst_bin_add (GstBin * bin, GstElement * element)
|
|||
GST_STR_NULL (GST_ELEMENT_NAME (element)),
|
||||
GST_STR_NULL (GST_ELEMENT_NAME (bin)));
|
||||
|
||||
GST_TRACER_BIN_ADD_PRE (bin, element);
|
||||
result = bclass->add_element (bin, element);
|
||||
GST_TRACER_BIN_ADD_POST (bin, element, result);
|
||||
|
||||
return result;
|
||||
|
||||
|
@ -1694,7 +1696,9 @@ gst_bin_remove (GstBin * bin, GstElement * element)
|
|||
GST_CAT_DEBUG (GST_CAT_PARENTAGE, "removing element %s from bin %s",
|
||||
GST_ELEMENT_NAME (element), GST_ELEMENT_NAME (bin));
|
||||
|
||||
GST_TRACER_BIN_REMOVE_PRE (bin, element);
|
||||
result = bclass->remove_element (bin, element);
|
||||
GST_TRACER_BIN_REMOVE_POST (bin, result);
|
||||
|
||||
return result;
|
||||
|
||||
|
|
|
@ -696,7 +696,7 @@ gst_element_add_pad (GstElement * element, GstPad * pad)
|
|||
|
||||
/* emit the PAD_ADDED signal */
|
||||
g_signal_emit (element, gst_element_signals[PAD_ADDED], 0, pad);
|
||||
|
||||
GST_TRACER_ELEMENT_ADD_PAD (element, pad);
|
||||
return TRUE;
|
||||
|
||||
/* ERROR cases */
|
||||
|
@ -808,7 +808,7 @@ gst_element_remove_pad (GstElement * element, GstPad * pad)
|
|||
|
||||
/* emit the PAD_REMOVED signal before unparenting and losing the last ref. */
|
||||
g_signal_emit (element, gst_element_signals[PAD_REMOVED], 0, pad);
|
||||
|
||||
GST_TRACER_ELEMENT_REMOVE_PAD (element, pad);
|
||||
gst_object_unparent (GST_OBJECT_CAST (pad));
|
||||
|
||||
return TRUE;
|
||||
|
|
|
@ -448,6 +448,9 @@ gst_element_factory_make (const gchar * factoryname, const gchar * name)
|
|||
goto create_failed;
|
||||
|
||||
gst_object_unref (factory);
|
||||
|
||||
GST_TRACER_ELEMENT_NEW (element);
|
||||
|
||||
return element;
|
||||
|
||||
/* ERRORS */
|
||||
|
|
11
gst/gstpad.c
11
gst/gstpad.c
|
@ -1987,6 +1987,8 @@ gst_pad_unlink (GstPad * srcpad, GstPad * sinkpad)
|
|||
g_return_val_if_fail (GST_IS_PAD (sinkpad), FALSE);
|
||||
g_return_val_if_fail (GST_PAD_IS_SINK (sinkpad), FALSE);
|
||||
|
||||
GST_TRACER_PAD_UNLINK_PRE (srcpad, sinkpad);
|
||||
|
||||
GST_CAT_INFO (GST_CAT_ELEMENT_PADS, "unlinking %s:%s(%p) and %s:%s(%p)",
|
||||
GST_DEBUG_PAD_NAME (srcpad), srcpad,
|
||||
GST_DEBUG_PAD_NAME (sinkpad), sinkpad);
|
||||
|
@ -2054,6 +2056,7 @@ done:
|
|||
GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK, parent, FALSE));
|
||||
gst_object_unref (parent);
|
||||
}
|
||||
GST_TRACER_PAD_UNLINK_POST (srcpad, sinkpad, result);
|
||||
return result;
|
||||
|
||||
/* ERRORS */
|
||||
|
@ -2495,7 +2498,13 @@ link_failed:
|
|||
GstPadLinkReturn
|
||||
gst_pad_link (GstPad * srcpad, GstPad * sinkpad)
|
||||
{
|
||||
return gst_pad_link_full (srcpad, sinkpad, GST_PAD_LINK_CHECK_DEFAULT);
|
||||
GstPadLinkReturn ret;
|
||||
|
||||
GST_TRACER_PAD_LINK_PRE (srcpad, sinkpad);
|
||||
ret = gst_pad_link_full (srcpad, sinkpad, GST_PAD_LINK_CHECK_DEFAULT);
|
||||
GST_TRACER_PAD_LINK_POST (srcpad, sinkpad, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -48,7 +48,10 @@ static const gchar *_quark_strings[] = {
|
|||
"pad-pull-range-pre", "pad-pull-range-post", "pad-push-event-pre",
|
||||
"pad-push-event-post", "pad-query-pre", "pad-query-post",
|
||||
"element-post-message-pre",
|
||||
"element-post-message-post", "element-query-pre", "element-query-post"
|
||||
"element-post-message-post", "element-query-pre", "element-query-post",
|
||||
"element-new", "element-add-pad", "element-remove-pad", "bin-add-pre",
|
||||
"bin-add-post", "bin-remove-pre", "bin-remove-post", "pad-link-pre",
|
||||
"pad-link-post", "pad-unlink-pre", "pad-unlink-post"
|
||||
};
|
||||
|
||||
GQuark _priv_gst_tracer_quark_table[GST_TRACER_QUARK_MAX];
|
||||
|
|
|
@ -61,6 +61,17 @@ typedef enum _GstTracerQuarkId
|
|||
GST_TRACER_QUARK_HOOK_ELEMENT_POST_MESSAGE_POST,
|
||||
GST_TRACER_QUARK_HOOK_ELEMENT_QUERY_PRE,
|
||||
GST_TRACER_QUARK_HOOK_ELEMENT_QUERY_POST,
|
||||
GST_TRACER_QUARK_HOOK_ELEMENT_NEW,
|
||||
GST_TRACER_QUARK_HOOK_ELEMENT_ADD_PAD,
|
||||
GST_TRACER_QUARK_HOOK_ELEMENT_REMOVE_PAD,
|
||||
GST_TRACER_QUARK_HOOK_BIN_ADD_PRE,
|
||||
GST_TRACER_QUARK_HOOK_BIN_ADD_POST,
|
||||
GST_TRACER_QUARK_HOOK_BIN_REMOVE_PRE,
|
||||
GST_TRACER_QUARK_HOOK_BIN_REMOVE_POST,
|
||||
GST_TRACER_QUARK_HOOK_PAD_LINK_PRE,
|
||||
GST_TRACER_QUARK_HOOK_PAD_LINK_POST,
|
||||
GST_TRACER_QUARK_HOOK_PAD_UNLINK_PRE,
|
||||
GST_TRACER_QUARK_HOOK_PAD_UNLINK_POST,
|
||||
GST_TRACER_QUARK_MAX
|
||||
} GstTracerQuarkId;
|
||||
|
||||
|
@ -203,6 +214,83 @@ typedef void (*GstTracerHookElementQueryPost) (GObject *, GstClockTime,
|
|||
GstTracerHookElementQueryPost, (GST_TRACER_ARGS, element, res)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookElementNew) (GObject *, GstClockTime,
|
||||
GstElement *);
|
||||
#define GST_TRACER_ELEMENT_NEW(element) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_ELEMENT_NEW), \
|
||||
GstTracerHookElementNew, (GST_TRACER_ARGS, element)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookElementAddPad) (GObject *, GstClockTime,
|
||||
GstElement *, GstPad *);
|
||||
#define GST_TRACER_ELEMENT_ADD_PAD(element, pad) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_ELEMENT_ADD_PAD), \
|
||||
GstTracerHookElementAddPad, (GST_TRACER_ARGS, element, pad)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookElementRemovePad) (GObject *, GstClockTime,
|
||||
GstElement *, GstPad *);
|
||||
#define GST_TRACER_ELEMENT_REMOVE_PAD(element, pad) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_ELEMENT_REMOVE_PAD), \
|
||||
GstTracerHookElementRemovePad, (GST_TRACER_ARGS, element, pad)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookBinAddPre) (GObject *, GstClockTime,
|
||||
GstBin *, GstElement *);
|
||||
#define GST_TRACER_BIN_ADD_PRE(bin, element) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_BIN_ADD_PRE), \
|
||||
GstTracerHookBinAddPre, (GST_TRACER_ARGS, bin, element)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookBinAddPost) (GObject *, GstClockTime,
|
||||
GstBin *, GstElement *, gboolean);
|
||||
#define GST_TRACER_BIN_ADD_POST(bin, element, result) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_BIN_ADD_POST), \
|
||||
GstTracerHookBinAddPost, (GST_TRACER_ARGS, bin, element, result)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookBinRemovePre) (GObject *, GstClockTime,
|
||||
GstBin *, GstElement *);
|
||||
#define GST_TRACER_BIN_REMOVE_PRE(bin, element) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_BIN_REMOVE_PRE), \
|
||||
GstTracerHookBinRemovePre, (GST_TRACER_ARGS, bin, element)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookBinRemovePost) (GObject *, GstClockTime,
|
||||
GstBin *, gboolean);
|
||||
#define GST_TRACER_BIN_REMOVE_POST(bin, result) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_BIN_REMOVE_POST), \
|
||||
GstTracerHookBinRemovePost, (GST_TRACER_ARGS, bin, result)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookPadLinkPre) (GObject *, GstClockTime,
|
||||
GstPad *, GstPad *);
|
||||
#define GST_TRACER_PAD_LINK_PRE(srcpad, sinkpad) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_PAD_LINK_PRE), \
|
||||
GstTracerHookPadLinkPre, (GST_TRACER_ARGS, srcpad, sinkpad)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookPadLinkPost) (GObject *, GstClockTime,
|
||||
GstPad *, GstPad *, GstPadLinkReturn);
|
||||
#define GST_TRACER_PAD_LINK_POST(srcpad, sinkpad, result) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_PAD_LINK_POST), \
|
||||
GstTracerHookPadLinkPost, (GST_TRACER_ARGS, srcpad, sinkpad, result)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookPadUnlinkPre) (GObject *, GstClockTime,
|
||||
GstPad *, GstPad *);
|
||||
#define GST_TRACER_PAD_UNLINK_PRE(srcpad, sinkpad) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_PAD_UNLINK_PRE), \
|
||||
GstTracerHookPadUnlinkPre, (GST_TRACER_ARGS, srcpad, sinkpad)); \
|
||||
}G_STMT_END
|
||||
|
||||
typedef void (*GstTracerHookPadUnlinkPost) (GObject *, GstClockTime,
|
||||
GstPad *, GstPad *, gboolean);
|
||||
#define GST_TRACER_PAD_UNLINK_POST(srcpad, sinkpad, result) G_STMT_START{ \
|
||||
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_PAD_UNLINK_POST), \
|
||||
GstTracerHookPadUnlinkPost, (GST_TRACER_ARGS, srcpad, sinkpad, result)); \
|
||||
}G_STMT_END
|
||||
|
||||
#else /* !GST_DISABLE_GST_DEBUG */
|
||||
|
||||
#define GST_TRACER_PAD_PUSH_PRE(pad, buffer)
|
||||
|
@ -219,6 +307,17 @@ typedef void (*GstTracerHookElementQueryPost) (GObject *, GstClockTime,
|
|||
#define GST_TRACER_ELEMENT_POST_MESSAGE_POST(element, res)
|
||||
#define GST_TRACER_ELEMENT_QUERY_PRE(element, query)
|
||||
#define GST_TRACER_ELEMENT_QUERY_POST(element, res)
|
||||
#define GST_TRACER_ELEMENT_NEW(element),
|
||||
#define GST_TRACER_ELEMENT_ADD_PAD(element, pad),
|
||||
#define GST_TRACER_ELEMENT_REMOVE_PAD(element, pad),
|
||||
#define GST_TRACER_BIN_ADD_PRE(bin, element),
|
||||
#define GST_TRACER_BIN_ADD_POST(bin, element, res),
|
||||
#define GST_TRACER_BIN_REMOVE_PRE(bin, element),
|
||||
#define GST_TRACER_BIN_REMOVE_POST(bin, res),
|
||||
#define GST_TRACER_PAD_LINK_PRE(srcpad, sinkpad),
|
||||
#define GST_TRACER_PAD_LINK_POST(srcpad, sinkpad, res),
|
||||
#define GST_TRACER_PAD_UNLINK_PRE(srcpad, sinkpad),
|
||||
#define GST_TRACER_PAD_UNLINK_POST(srcpad, sinkpad, res),
|
||||
|
||||
#endif /* GST_DISABLE_GST_DEBUG */
|
||||
|
||||
|
|
Loading…
Reference in a new issue