+2006-11-06 Stefan Kost <ensonic@users.sf.net>
+
+ * docs/gst/gstreamer-sections.txt:
+ add new API and fix the build
+
+ * gst/gstbin.c: (gst_bin_recalc_state):
+ * gst/gstelement.c: (gst_element_message_full),
+ (gst_element_get_state_func), (gst_element_set_state_func):
+ use new API and improve logging
+
+ * gst/gstutils.c: (gst_element_state_change_return_get_name):
+ * gst/gstutils.h:
+ API: add function to get StateChangereturn names to improve logs
+
2006-11-04 Thomas Vander Stichele <thomas at apestaart dot org>
* plugins/elements/gstfilesrc.c: (gst_file_src_start):
gst_element_continue_state
gst_element_lost_state
gst_element_state_get_name
+gst_element_state_change_return_get_name
gst_element_sync_state_with_parent
<SUBSECTION element-tags>
GST_PAD_IS_IN_GETCAPS
GST_PAD_MODE_ACTIVATE
+GST_PAD_BLOCK_BROADCAST
GST_PAD_BLOCK_GET_COND
GST_PAD_BLOCK_SIGNAL
GST_PAD_BLOCK_WAIT
goto unknown_state;
}
- GST_CAT_INFO_OBJECT (GST_CAT_STATES, bin, "bin RETURN is now %d", ret);
+ GST_CAT_INFO_OBJECT (GST_CAT_STATES, bin, "bin RETURN is now %s",
+ gst_element_state_change_return_get_name (ret));
return;
}
gst_element_post_message (element, message);
- GST_CAT_INFO_OBJECT (GST_CAT_ERROR_SYSTEM, element, "posted message: %s",
- sent_text);
+ GST_CAT_INFO_OBJECT (GST_CAT_ERROR_SYSTEM, element, "posted %s message: %s",
+ (type == GST_MESSAGE_ERROR ? "error" : "warning"), sent_text);
/* cleanup */
g_error_free (gerror);
*pending = GST_STATE_PENDING (element);
GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element,
- "state current: %s, pending: %s, result: %d",
+ "state current: %s, pending: %s, result: %s",
gst_element_state_get_name (GST_STATE (element)),
- gst_element_state_get_name (GST_STATE_PENDING (element)), ret);
+ gst_element_state_get_name (GST_STATE_PENDING (element)),
+ gst_element_state_change_return_get_name (ret));
GST_OBJECT_UNLOCK (element);
return ret;
GST_STATE_PENDING (element) = state;
GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element,
- "current %s, old_pending %s, next %s, old return %d",
+ "current %s, old_pending %s, next %s, old return %s",
gst_element_state_get_name (current),
gst_element_state_get_name (old_pending),
- gst_element_state_get_name (next), old_ret);
+ gst_element_state_get_name (next),
+ gst_element_state_change_return_get_name (old_ret));
/* if the element was busy doing a state change, we just update the
* target state, it'll get to it async then. */
GST_STATE_UNLOCK (element);
- GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element, "returned %d", ret);
+ GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element, "returned %s",
+ gst_element_state_change_return_get_name (ret));
return ret;
*
* Returns: a string with the name of the state.
*/
-const gchar *
+G_CONST_RETURN gchar *
gst_element_state_get_name (GstState state)
{
switch (state) {
}
/**
+ * gst_element_state_change_return_get_name:
+ * @state_ret: a #GstStateChangeReturn to get the name of.
+ *
+ * Gets a string representing the given state change result.
+ *
+ * Returns: a string with the name of the state change result.
+ */
+G_CONST_RETURN gchar *
+gst_element_state_change_return_get_name (GstStateChangeReturn state_ret)
+{
+ switch (state_ret) {
+#ifdef GST_DEBUG_COLOR
+ case GST_STATE_CHANGE_FAILURE:
+ return "\033[01;31mFAILURE\033[00m";
+ break;
+ case GST_STATE_CHANGE_SUCCESS:
+ return "\033[01;32mSUCCESS\033[00m";
+ break;
+ case GST_STATE_CHANGE_ASYNC:
+ return "\033[01;33mASYNC\033[00m";
+ break;
+ case GST_STATE_CHANGE_NO_PREROLL:
+ return "\033[01;34mNO PREROLL\033[00m";
+ break;
+ default:
+ /* This is a memory leak */
+ return g_strdup_printf ("\033[01;35;41mUNKNOWN!\033[00m(%d)", state_ret);
+#else
+ case GST_STATE_CHANGE_FAILURE:
+ return "FAILURE";
+ break;
+ case GST_STATE_CHANGE_SUCCESS:
+ return "SUCCESS";
+ break;
+ case GST_STATE_CHANGE_ASYNC:
+ return "ASYNC";
+ break;
+ case GST_STATE_CHANGE_NO_PREROLL:
+ return "NO PREROLL";
+ break;
+ default:
+ /* This is a memory leak */
+ return g_strdup_printf ("UNKNOWN!(%d)", state_ret);
+#endif
+ }
+}
+
+
+/**
* gst_element_factory_can_src_caps :
* @factory: factory to query
* @caps: the caps to check
GstPadTemplate* gst_element_get_compatible_pad_template (GstElement *element, GstPadTemplate *compattempl);
G_CONST_RETURN gchar* gst_element_state_get_name (GstState state);
+G_CONST_RETURN gchar * gst_element_state_change_return_get_name (GstStateChangeReturn state_ret);
gboolean gst_element_link (GstElement *src, GstElement *dest);
gboolean gst_element_link_many (GstElement *element_1,