diff --git a/ChangeLog b/ChangeLog index 749639cc3e..94d5ed998a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2005-11-02 Thomas Vander Stichele + + * docs/README: + * docs/gst/gstreamer-sections.txt: + * gst/gstbin.c: + doc updates + * gst/gstregistry.c: (gst_registry_scan_path_level): + fix for a nasty little missed situation where an installed plug-in + which was in the cache did not get overridden by an uninstalled one + which was earlier in the plugin path because the newly created plugin + for the uninstalled one (not in the registry) didn't get its + ->registered set to TRUE + 2005-11-02 Tim-Philipp Müller * gst/base/gstcollectpads.c: (gst_collectpads_set_function), diff --git a/docs/README b/docs/README index 35b1196fa8..565e49b370 100644 --- a/docs/README +++ b/docs/README @@ -199,7 +199,8 @@ STYLE GUIDE FOR GTK-DOC "Caller owns returned value" for other types (iterators, ..) - we do this because, in contrast with GLib/GTK, we are more explicit about threadsafety and related issues - +- link to signals from the description like this: + * The element-added signal - the bottom of the description should say when the doc was last reviewed (version and date) * Last reviewed on 2005-10-28 (0.9.4) diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt index 0a4cebb071..af29c699e5 100644 --- a/docs/gst/gstreamer-sections.txt +++ b/docs/gst/gstreamer-sections.txt @@ -37,11 +37,7 @@ thread_list gstbin GstBin GstBin -GstBinFlags - -GST_BIN_CHILDREN -GST_BIN_CHILDREN_COOKIE -GST_BIN_NUMCHILDREN +GstBinClass gst_bin_new gst_bin_add @@ -56,12 +52,19 @@ gst_bin_iterate_recurse gst_bin_iterate_sinks gst_bin_iterate_sorted gst_bin_iterate_all_by_interface + gst_bin_add_many gst_bin_remove_many + +GstBinFlags + +GST_BIN_CHILDREN +GST_BIN_CHILDREN_COOKIE +GST_BIN_NUMCHILDREN + -GstBinClass GST_BIN GST_IS_BIN GST_TYPE_BIN diff --git a/gst/gstbin.c b/gst/gstbin.c index 972b259aaa..930fa1fe5a 100644 --- a/gst/gstbin.c +++ b/gst/gstbin.c @@ -25,7 +25,7 @@ /** * SECTION:gstbin - * @short_description: Base class for elements that contain other elements + * @short_description: Base class and element that can contain other elements * * GstBin is an element that can contain other elements, allowing them to be * managed as a group. @@ -49,41 +49,61 @@ * gst_bin_iterate_elements(). Various other iterators exist to retrieve the * elements in a bin. * - * The "element_added" signal is fired whenever a new element is added to the - * bin. Likewise the "element_removed" signal is fired whenever an element is - * removed from the bin. + * gst_object_unref() is used to drop your reference to the bin. * - * A GstBin internally interceps all #GstMessage posted by its children and + * The element-added signal is + * fired whenever a new element is added to the bin. Likewise the element-removed signal is fired + * whenever an element is removed from the bin. + * + * Notes + * * A GstBin internally intercepts every #GstMessage posted by its children and - * implements the following default behaviour for each of them. - * - * GST_MESSAGE_EOS: This message is only posted by sinks - * in the PLAYING state. If all sinks posted the EOS message, this bin - * will post and EOS message upwards. - * - * GST_MESSAGE_SEGMENT_START: just collected and never forwarded upwards. + * implements the following default behaviour for each of them: + * + * + * GST_MESSAGE_EOS + * This message is only posted by sinks in the PLAYING + * state. If all sinks posted the EOS message, this bin will post and EOS + * message upwards. + * + * + * GST_MESSAGE_SEGMENT_START + * just collected and never forwarded upwards. * The messages are used to decide when all elements have completed playback - * of their segment. - * - * GST_MESSAGE_SEGMENT_DONE: Is posted by GstBin when all elements that posted - * a SEGMENT_START have posted a SEGMENT_DONE. - * - * OTHERS: posted upwards. + * of their segment. + * + * + * GST_MESSAGE_SEGMENT_DONE + * Is posted by GstBin when all elements that posted + * a SEGMENT_START have posted a SEGMENT_DONE. + * + * + * OTHERS + * posted upwards. + * + * * * A GstBin implements the following default behaviour for answering to a * #GstQuery: - * - * GST_QUERY_DURATION: If the query has been asked before with the same - * format, use the cached previous value. If no previous value - * was cached, the query is sent to all sink elements in the bin - * and the MAXIMUM of all values is returned and cached. If no - * sinks are available in the bin, the query fails. - * - * OTHERS: the query is forwarded to all sink elements, the result of the - * first sink that answers the query successfully is returned. If - * no sink is in the bin, the query fails. - * - * gst_object_unref() is used to drop your reference to the bin. + * + * + * GST_QUERY_DURATION + * If the query has been asked before with the same format, + * use the cached previous value. If no previous value was cached, the + * query is sent to all sink elements in the bin and the MAXIMUM of all + * values is returned and cached. If no sinks are available in the bin, the + * query fails. + * + * + * OTHERS + * the query is forwarded to all sink elements, the result + * of the first sink that answers the query successfully is returned. If no + * sink is in the bin, the query fails. + * + * + * + * * * Last reviewed on 2005-10-28 (0.9.4) */ diff --git a/gst/gstregistry.c b/gst/gstregistry.c index 7cedf1d098..9a97d26884 100644 --- a/gst/gstregistry.c +++ b/gst/gstregistry.c @@ -709,11 +709,12 @@ gst_registry_scan_path_level (GstRegistry * registry, const gchar * path, gst_object_unref (plugin); continue; } - plugin->registered = TRUE; if (plugin->file_mtime == file_status.st_mtime && plugin->file_size == file_status.st_size) { GST_DEBUG_OBJECT (registry, "file %s cached", filename); plugin->flags &= ~GST_PLUGIN_FLAG_CACHED; + GST_DEBUG_OBJECT (registry, "marking plugin %p as registered", plugin); + plugin->registered = TRUE; } else { GST_INFO_OBJECT (registry, "cached info for %s is stale", filename); GST_DEBUG_OBJECT (registry, "mtime %ld != %ld or size %" @@ -722,8 +723,12 @@ gst_registry_scan_path_level (GstRegistry * registry, const gchar * path, plugin->file_size, file_status.st_size); gst_registry_remove_plugin (gst_registry_get_default (), plugin); newplugin = gst_plugin_load_file (filename, NULL); - if (newplugin) + if (newplugin) { + GST_DEBUG_OBJECT (registry, "marking new plugin %p as registered", + newplugin); + newplugin->registered = TRUE; gst_object_unref (newplugin); + } } gst_object_unref (plugin);