gstreamer/gst
Wim Taymans 85d5a29b40 bin: reorganize _remove_func to avoid races
Make the gst_bin_remove_func more like the add_func. Check if the element we try
to remove from the bin has the bin as the parent and set the parent flag to NULL
immediately, this allows us to avoid concurrent remove operations without using
the UNPARENTING element flag. After we unparented the element from the bin, we
update the bin state and remove the element from the list. Finally we unlink
all the pads.

This avoids a race condition where the element could still claim to have the
bin as the parent while the bin didn't have a pointer to the element anymore.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=647759
2012-06-11 15:41:58 +02:00
..
parse Fix format string in grammar.y 2012-04-26 19:54:49 +02:00
.gitignore gstbase: Add gobject-introspection support 2009-09-05 10:28:46 +02:00
gettext.h gettext: build fixes: #if -> #ifdef 2010-03-22 17:10:06 +02:00
glib-compat-private.h Use recent GLib API unconditionally now that we depend on the latest GLib 2012-01-22 01:25:22 +00:00
glib-compat.c glib-compat: Add license boilerplate for LGPL 2011-12-12 11:55:52 +01:00
glib-compat.h Remove some compatibility stuff for GLib < 2.14 2009-03-26 11:08:27 +01:00
gst-i18n-app.h gst: include locale.h before any other i18n headers 2012-01-05 00:32:42 +00:00
gst-i18n-lib.h gst: include locale.h before any other i18n headers 2012-01-05 00:32:42 +00:00
gst.c debugutils: Fix static linking on OS X 2012-05-25 10:49:47 +02:00
gst.h Add new GstTocSetter interface 2012-04-02 21:50:55 +02:00
gst_private.h toc: use global quark table 2012-05-20 17:48:55 +01:00
gstatomicqueue.c atomicqueue: fix race 2012-04-07 15:30:12 +01:00
gstatomicqueue.h gst: sprinkle some G_GNUC_MALLOC 2011-11-26 18:57:44 +00:00
gstbin.c bin: reorganize _remove_func to avoid races 2012-06-11 15:41:58 +02:00
gstbin.h cleanups 2011-02-22 16:04:12 +01:00
gstbuffer.c meta: add LOCKED flag 2012-04-17 15:55:10 +02:00
gstbuffer.h buffer: MARKER is for the start of a talkspurt 2012-04-25 09:08:05 +02:00
gstbufferlist.c docs: update more documentation 2012-03-29 13:34:50 +02:00
gstbufferlist.h win32: fix exported variables for VS 2010 2011-12-27 23:26:07 +00:00
gstbufferpool.c bufferpool: Reset the buffer before releasing into pool 2012-04-25 09:09:01 +02:00
gstbufferpool.h bufferpool: Reset the buffer before releasing into pool 2012-04-25 09:09:01 +02:00
gstbus.c review some docs 2012-03-28 18:12:23 +02:00
gstbus.h bus: Change the timeout argument type of gst_bus_poll() from GstClockTimeDiff to GstClockTime 2012-03-27 12:31:18 +02:00
gstcaps.c caps: log freeing of caps at same log level as creation, i.e. TRACE 2012-05-27 20:31:30 +01:00
gstcaps.h caps: remove gst_caps_union() 2012-03-13 10:04:36 +01:00
gstchildproxy.c childproxy: fix more missing GST_OBJECT -> G_OBJECT use 2012-03-31 21:26:56 +02:00
gstchildproxy.h childproxy: include the child name in the signal 2012-03-30 22:46:02 +02:00
gstclock.c docs: update more documentation 2012-03-29 13:34:50 +02:00
gstclock.h clock: make more stuff private 2012-02-27 09:11:36 +01:00
gstcompat.h taglist: make GstTagList a GstMiniObject 2012-05-28 00:05:16 +01:00
gstconfig.h.in Merge branch 'master' into 0.11 2012-01-10 13:00:07 +01:00
gstcontrolbinding.c controller: emulate _get_g_value_array() 2012-04-25 20:19:24 +02:00
gstcontrolbinding.h controller: expand the api to offer functions for plain and GValue arrays 2012-04-25 20:19:23 +02:00
gstcontrolsource.c controller: expand the api to offer functions for plain and GValue arrays 2012-04-25 20:19:23 +02:00
gstcontrolsource.h control-sources: turn into GstObjects 2011-12-31 09:57:49 +01:00
gstdatetime.c datetime: remove fallback code for old GLibs 2012-06-09 18:05:14 +01:00
gstdatetime.h Merge remote-tracking branch 'origin/master' into 0.11 2011-11-26 19:44:23 +00:00
gstdebugutils.c debugutils: Fix static linking on OS X 2012-05-25 10:49:47 +02:00
gstdebugutils.h Also add headerfile 2012-01-09 15:59:42 +00:00
gstelement.c gstelement: Start over if subclass removed the next pad too 2012-06-11 10:43:34 +02:00
gstelement.h element: add gst_element_class_{set,add}_static_metadata() 2012-04-09 12:49:38 +01:00
gstelementfactory.c elementfactory: add gst_element_factory_get_metadata_keys() 2012-05-19 14:52:29 +01:00
gstelementfactory.h elementfactory: make object struct opaque for now 2012-05-19 16:17:12 +01:00
gstelementmetadata.h element: rework GstElementDetails 2010-12-07 15:33:04 +01:00
gsterror.c Use GLib's type for GError instead of our own 2012-01-22 15:16:14 +00:00
gsterror.h Use GLib's type for GError instead of our own 2012-01-22 15:16:14 +00:00
gstevent.c event: Don't make the TOC event a multi-sticky event 2012-06-06 14:16:01 +02:00
gstevent.h event: Don't make the TOC event a multi-sticky event 2012-06-06 14:16:01 +02:00
gstformat.c Replace deprecated GStaticMutex with GMutex 2012-01-22 22:44:59 +00:00
gstformat.h .h: fix header files 2011-11-11 17:30:03 +01:00
gstghostpad.c ghostpad: set result on accept caps query when there is no peer 2012-05-01 13:32:41 +02:00
gstghostpad.h Merge remote-tracking branch 'origin/master' into 0.11 2011-11-26 19:44:23 +00:00
gstinfo.c meta: improve debugging 2012-03-01 17:41:57 +01:00
gstinfo.h win32: fix exported variables for VS 2010 2011-12-27 23:26:07 +00:00
gstiterator.c docs: update more documentation 2012-03-29 13:34:50 +02:00
gstiterator.h Merge remote-tracking branch 'origin/master' into 0.11 2011-11-26 19:44:23 +00:00
gstmacros.h macros: Define restrict keyword if not available 2010-12-02 19:02:07 +01:00
gstmemory.c memory: add missing parameter to default_mem_map() 2012-05-04 09:22:51 +01:00
gstmemory.h docs: update more documentation 2012-03-29 13:34:50 +02:00
gstmessage.c gst_tag_list_free -> gst_tag_list_unref 2012-06-05 15:05:07 +01:00
gstmessage.h message: Remove comma at end of enum list 2012-04-23 09:21:28 +02:00
gstmeta.c docs: update more documentation 2012-03-29 13:34:50 +02:00
gstmeta.h meta: add LOCKED flag 2012-04-17 15:55:10 +02:00
gstminiobject.c docs: update more documentation 2012-03-29 13:34:50 +02:00
gstminiobject.h docs: update more documentation 2012-03-29 13:34:50 +02:00
gstobject.c gstobject: give the 20th queue element a different name than the first queue2 one 2012-04-29 13:28:09 +01:00
gstobject.h controller: expand the api to offer functions for plain and GValue arrays 2012-04-25 20:19:23 +02:00
gstpad.c Make sure that unlinked pads do not cause a return false on latency events. 2012-06-06 13:42:32 +02:00
gstpad.h pad: Don't accept any buffers or events after EOS 2012-06-04 13:01:40 +02:00
gstpadtemplate.c docs: update more documentation 2012-03-29 13:34:50 +02:00
gstpadtemplate.h Merge remote-tracking branch 'origin/master' into 0.11 2011-11-26 19:44:23 +00:00
gstparamspecs.c introspection: Add missing annotations 2011-10-19 10:23:53 +02:00
gstparamspecs.h Merge remote-tracking branch 'origin/master' into 0.11 2011-11-26 19:44:23 +00:00
gstparse.c Use macros to register boxed types thread safely 2012-01-28 16:42:38 +00:00
gstparse.h gst: sprinkle some G_GNUC_MALLOC 2011-11-26 18:57:44 +00:00
gstpipeline.c docs: update more documentation 2012-03-29 13:34:50 +02:00
gstpipeline.h Merge remote-tracking branch 'origin/master' into 0.11 2011-11-26 19:44:23 +00:00
gstplugin.c plugin: avoid some relocations 2012-04-29 20:06:38 +01:00
gstplugin.h docs: remove reference to removed API in plugin docs 2012-04-29 20:06:58 +01:00
gstpluginfeature.c pluginfeature: add gst_plugin_feature_get_plugin() 2012-05-19 17:16:35 +01:00
gstpluginfeature.h pluginfeature: make GstPluginFeature structure private 2012-05-19 17:25:24 +01:00
gstpluginloader.c plugin: use GstObject flags for plugin flags 2012-04-29 17:46:32 +01:00
gstpluginloader.h .h: fix header files 2011-11-11 17:30:03 +01:00
gstpoll.c gst: Fix compiler warnings on mingw-w64 2012-05-09 09:35:35 +02:00
gstpoll.h gst: sprinkle some G_GNUC_MALLOC 2011-11-26 18:57:44 +00:00
gstpreset.c gst: Change versioning 2012-04-04 14:28:55 +02:00
gstpreset.h Merge branch 'master' into 0.11 2012-02-08 14:45:25 +01:00
gstquark.c message, event: update for tag lists not being structures any more 2012-05-26 11:44:03 +01:00
gstquark.h message, event: update for tag lists not being structures any more 2012-05-26 11:44:03 +01:00
gstquery.c query: improve docs 2012-06-06 09:15:04 +02:00
gstquery.h Add new TOC query 2012-04-02 21:50:55 +02:00
gstregistry.c registry: We name the registry after the target cpu 2012-06-07 10:57:31 +02:00
gstregistry.h registry: get rid of gst_default_registry_*() convenience macros 2012-01-02 02:32:49 +00:00
gstregistrybinary.c plugin: use GstObject flags for plugin flags 2012-04-29 17:46:32 +01:00
gstregistrybinary.h registry: Set registry version to 1.0.0 too 2012-04-05 10:57:29 +02:00
gstregistrychunks.c plugin: use GstObject flags for plugin flags 2012-04-29 17:46:32 +01:00
gstregistrychunks.h binaryregistry: ignore the plugin cache if the filter environment has changed 2010-06-23 17:56:51 +01:00
gstsample.c docs: update more documentation 2012-03-29 13:34:50 +02:00
gstsample.h remove TRACE_NAME from headers 2012-02-02 15:52:19 +01:00
gstsegment.c docs: update more documentation 2012-03-29 13:34:50 +02:00
gstsegment.h event: add new seek snap flags 2012-04-30 09:58:09 +01:00
gststructure.c docs: fix gst_structure_to_string() docs 2012-05-17 12:01:51 +02:00
gststructure.h win32: fix exported variables for VS 2010 2011-12-27 23:26:07 +00:00
gstsystemclock.c gst: Fix compiler warnings on mingw-w64 2012-05-09 09:35:35 +02:00
gstsystemclock.h systemclock: make more stuff private 2012-02-27 09:11:36 +01:00
gsttaglist.c taglist: add guards to make sure taglist is writable when modifying it 2012-05-29 08:48:36 +01:00
gsttaglist.h taglist: avoid unnecessary string copying when registering tags 2012-05-29 08:00:28 +01:00
gsttagsetter.c gst_tag_list_free() -> gst_tag_list_unref() 2012-05-28 00:08:18 +01:00
gsttagsetter.h .h: fix header files 2011-11-11 17:30:03 +01:00
gsttask.c task: remove gst_task_set_priority() 2012-04-08 21:17:46 +01:00
gsttask.h task: remove gst_task_set_priority() 2012-04-08 21:17:46 +01:00
gsttaskpool.c docs: gst: more gobject introspection annotations 2010-12-07 18:37:04 +00:00
gsttaskpool.h .h: fix header files 2011-11-11 17:30:03 +01:00
gsttoc.c gst_tag_list_free() -> gst_tag_list_unref() 2012-05-28 00:08:18 +01:00
gsttoc.h toc: Add boxed types for GstToc and GstTocEntry 2012-05-21 08:46:48 +02:00
gsttocsetter.c tocsetter: clear mutex upon free 2012-04-05 12:22:23 +02:00
gsttocsetter.h Add new GstTocSetter interface 2012-04-02 21:50:55 +02:00
gsttrace.c trace: use g_parse_debug_string instead of atoi 2012-04-17 10:33:59 +02:00
gsttrace.h trace: rework alloc tracing 2012-01-27 17:54:43 +01:00
gsttypefind.c typefind: remove const from refcounted GstCaps 2012-03-10 09:25:43 +01:00
gsttypefind.h typefind: remove const from refcounted GstCaps 2012-03-10 09:25:43 +01:00
gsttypefindfactory.c typefindfactory: fix return type of gst_type_find_factory_get_extensions() 2012-05-01 23:23:41 +01:00
gsttypefindfactory.h typefindfactory: make object struct opaque for now 2012-05-01 23:23:41 +01:00
gsturi.c uri: Add some debug statements 2012-05-23 09:39:16 +02:00
gsturi.h uri: fix wrong G_GNUC_MALLOC 2011-11-26 19:45:48 +00:00
gstutils.c utils: improve debug 2012-06-05 09:39:41 +02:00
gstutils.h gstutils: Faster read macros 2012-06-08 14:58:00 +02:00
gstvalue.c segment: add rude serialization 2012-04-16 15:56:11 +02:00
gstvalue.h value: remove gst_value_register_{subtract,union,intersect}_func() API 2012-03-08 11:21:37 +00:00
gstversion.h.in gst: Change versioning 2012-04-04 14:28:55 +02:00
Makefile.am gst: Change versioning 2012-04-04 14:28:55 +02:00
math-compat.h math-compat: move static variable for NAN into #ifndef NAN block 2011-12-30 12:59:46 +00:00