gstreamer/gst
Sebastian Dröge 733246f1b4 bus: Make setting/replacing/clearing the sync handler thread-safe
Previously we would use the object lock only for storing the sync
handler and its user_data in a local variable, then unlock it and only
then call the sync handler. Between unlocking and calling the sync
handler it might be unset and the user_data be freed, causing it to be
called with a freed pointer.

To prevent this add a refcounting wrapper struct around the sync
handler, hold the object lock while retrieving it and increasing the
reference count and only actually free it once the reference count
reaches zero.

As a side-effect we can now also allow to actually replace the sync
handler. Previously it was only allowed to clear it after initially
setting it according to the docs, but the code still allowed to clear it
and then set a different one.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/506
2020-02-14 14:41:46 +00:00
..
parse parse: add support for presets 2019-12-28 04:02:16 +00:00
printf Remove autotools build system 2019-10-13 16:10:42 +01:00
gettext.h Fix FSF address 2012-11-03 20:44:48 +00:00
glib-compat-private.h Fix FSF address 2012-11-03 20:44:48 +00:00
glib-compat.c Whenever we include windows.h, also define WIN32_LEAN_AND_MEAN 2016-02-20 10:07:42 +00:00
glib-compat.h Headers: add missing includes. 2015-08-15 13:17:07 +02:00
gst-i18n-app.h Fix FSF address 2012-11-03 20:44:48 +00:00
gst-i18n-lib.h Fix FSF address 2012-11-03 20:44:48 +00:00
gst.c pluginfeature: Allow updating initial rank of plugin feature 2019-12-26 19:49:00 +00:00
gst.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gst_private.h pluginfeature: Allow updating initial rank of plugin feature 2019-12-26 19:49:00 +00:00
gstallocator.c Update for g_type_class_add_private() deprecation in recent GLib 2018-06-24 12:49:14 +02:00
gstallocator.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstatomicqueue.c introspection: add missing (nullable) annotations to return values 2014-06-26 18:56:38 +02:00
gstatomicqueue.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstbin.c bin: Don't consider having a group-id or being STREAM_START if we have not a single STREAM_START message 2020-01-25 00:02:20 +02:00
gstbin.h bin: Add method to find elements by factory name 2019-12-20 14:29:19 +01:00
gstbuffer.c GstBuffer: size-related optimization 2019-11-27 14:25:19 +00:00
gstbuffer.h gstbuffer: update documentation 2019-11-18 00:15:31 +00:00
gstbufferlist.c gst: Add poisoning to more types 2018-08-03 14:31:34 +03:00
gstbufferlist.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstbufferpool.c bufferpool: Fix the buffer size reset code 2019-07-01 16:49:04 -04:00
gstbufferpool.h gst: Fix various Since markers 2019-04-23 15:08:18 +03:00
gstbus.c bus: Make setting/replacing/clearing the sync handler thread-safe 2020-02-14 14:41:46 +00:00
gstbus.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcaps.c caps: keep ANY caps empty internally 2020-02-12 14:41:40 +00:00
gstcaps.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcapsfeatures.c doc: Add some missing docstrings 2019-05-13 11:33:49 -04:00
gstcapsfeatures.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstchildproxy.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gstchildproxy.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstclock.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gstclock.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcompat.h Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstconfig.h.in gstconfig.h.in: Windows ARM64 does not allow unaligned access 2019-06-28 13:01:14 +05:30
gstcontext.c gst: Add poisoning to more types 2018-08-03 14:31:34 +03:00
gstcontext.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcontrolbinding.c documentation: fix a number of typos 2019-10-06 11:12:11 -04:00
gstcontrolbinding.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcontrolsource.c gst: Don't ref_sink() GstObject subclasses in instance_init/constructor 2017-05-17 10:40:37 +03:00
gstcontrolsource.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdatetime.c datetime: Add constructor for timestamps in microseconds 2019-11-25 13:31:11 +01:00
gstdatetime.h datetime: Add constructor for timestamps in microseconds 2019-11-25 13:31:11 +01:00
gstdebugutils.c doc: remove xml from comments 2019-05-29 21:33:42 +02:00
gstdebugutils.h debugutils: Make sure that GST_DEBUG_GRAPH_SHOW_VERBOSE gets the correct value in introspection 2018-11-10 19:08:52 +00:00
gstdevice.c device, elementfactory: relax floating requirement 2019-12-10 13:31:50 +01:00
gstdevice.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdevicemonitor.c documentation: fix a number of typos 2019-10-06 11:12:11 -04:00
gstdevicemonitor.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdeviceprovider.c documentation: fix a number of typos 2019-10-06 11:12:11 -04:00
gstdeviceprovider.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdeviceproviderfactory.c Don't use deprecated g_object_newv() 2017-04-08 09:49:59 +01:00
gstdeviceproviderfactory.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdynamictypefactory.c doc: Fix and add some missing docstrings 2019-05-13 11:33:49 -04:00
gstdynamictypefactory.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstelement.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gstelement.h element: Added gst_element_get_current_clock_time and gst_element_get_current_running_time 2019-08-12 12:59:27 +03:00
gstelementfactory.c device, elementfactory: relax floating requirement 2019-12-10 13:31:50 +01:00
gstelementfactory.h elementfactory: add GST_ELEMENT_FACTORY_TYPE_HARDWARE 2019-11-02 15:11:12 +01:00
gstelementmetadata.h Headers: add missing includes. 2015-08-15 13:17:07 +02:00
gsterror.c doc: remove xml from comments 2019-05-29 21:33:42 +02:00
gsterror.h doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gstevent.c event/message: Don't allow setting invalid group ids 2020-01-24 17:53:30 +02:00
gstevent.h event: Fix gir warning 2019-11-12 15:19:28 +09:00
gstformat.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstformat.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstghostpad.c Update for g_type_class_add_private() deprecation in recent GLib 2018-06-24 12:49:14 +02:00
gstghostpad.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstinfo.c gstinfo: Add new API for getting debug log lines 2019-12-25 08:50:17 +05:30
gstinfo.h gstinfo: Add new API for getting debug log lines 2019-12-25 08:50:17 +05:30
gstiterator.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstiterator.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstmacros.h gstmacros.h: Fix restrict definition on MSVC 2019-02-20 17:51:40 +05:30
gstmemory.c Fixing various typos 2019-06-20 15:20:27 +00:00
gstmemory.h Fixing various typos 2019-06-20 15:20:27 +00:00
gstmessage.c event/message: Don't allow setting invalid group ids 2020-01-24 17:53:30 +02:00
gstmessage.h docs: Document the new 'redirect-location' error message detail field 2020-01-06 17:47:40 -03:00
gstmeta.c gstmeta: Optimize get_tags() by using private quark table 2019-06-17 09:50:32 +02:00
gstmeta.h buffer: store sequence number for metas 2019-02-12 17:53:08 +00:00
gstminiobject.c miniobject: free qdata array when the last qdata is removed 2019-09-04 16:31:53 +02:00
gstminiobject.h gst: Fix various Since markers 2019-04-23 15:08:18 +03:00
gstobject.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gstobject.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstpad.c pad: clear sticky event tag upon stream-start 2019-11-04 12:01:47 +00:00
gstpad.h pad: Added gst_pad_get_single_internal_link 2019-09-05 11:49:18 +03:00
gstpadtemplate.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gstpadtemplate.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstparamspecs.c gst: Fix up a bunch of GIR annotations 2018-01-27 10:41:24 +00:00
gstparamspecs.h gst: Add a GParamSpecFlag to force gst-inspect to use pspec default value 2019-05-13 11:33:49 -04:00
gstparse.c docs: mention gst_parse_bin_from_description() in gst_parse_launch() docs 2019-11-27 09:41:36 +00:00
gstparse.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstpipeline.c pipeline: Instant rate change handling 2019-11-03 19:47:40 +11:00
gstpipeline.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstplugin.c gstplugin: Don't stat plugins when building for UWP 2019-06-28 13:44:49 +05:30
gstplugin.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstpluginfeature.c pluginfeature: Allow updating initial rank of plugin feature 2019-12-26 19:49:00 +00:00
gstpluginfeature.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstpluginloader.c pluginloader: handle fsync interrupted by signal (EINTR) 2019-12-12 20:49:36 +01:00
gstpluginloader.h Headers: add missing includes. 2015-08-15 13:17:07 +02:00
gstpoll.c Port to hotdoc 2019-05-13 16:34:09 -04:00
gstpoll.h poll: add API to watch for POLLPRI 2018-06-08 11:53:55 -04:00
gstpreset.c Fix typos in comments and docs 2018-05-01 11:18:03 +01:00
gstpreset.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstpromise.c docstrings: port ulinks to markdown links 2019-08-23 18:17:41 +02:00
gstpromise.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstprotection.c protection: Release decryptors list, even if it's empty 2018-06-25 16:38:13 +01:00
gstprotection.h doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gstquark.c event/message: Add new instant-rate-sync-time event and instant-rate-request message 2019-11-03 19:47:40 +11:00
gstquark.h event/message: Add new instant-rate-sync-time event and instant-rate-request message 2019-11-03 19:47:40 +11:00
gstquery.c query: add a new bitrate query 2018-11-07 15:04:14 +00:00
gstquery.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstregistry.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gstregistry.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstregistrybinary.c registry: handle fsync interrupted by signal (EINTR) 2019-12-12 20:49:36 +01:00
gstregistrybinary.h tracer: initial prototype for the tracing subsystem 2015-10-05 20:59:39 +02:00
gstregistrychunks.c Fix typos in comments and docs 2018-05-01 11:18:03 +01:00
gstregistrychunks.h dynamic types: Implement dynamic types in the registry 2016-11-02 11:21:37 +11:00
gstsample.c gst: Add poisoning to more types 2018-08-03 14:31:34 +03:00
gstsample.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstsegment.c gstsegment: Add GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED 2019-04-24 15:30:22 +00:00
gstsegment.h event: Add new GST_EVENT_INSTANT_RATE_CHANGE and GST_SEEK_FLAGS_INSTANT_RATE_CHANGE 2019-11-03 19:47:40 +11:00
gststreamcollection.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gststreamcollection.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gststreams.c Update for g_type_class_add_private() deprecation in recent GLib 2018-06-24 12:49:14 +02:00
gststreams.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gststructure.c structure: add gst_structure_take 2019-11-14 10:08:38 +00:00
gststructure.h structure: add gst_structure_take 2019-11-14 10:08:38 +00:00
gstsystemclock.c systemclock: No need to check for CLOCK_TAI in the meson 2020-01-27 17:16:14 +00:00
gstsystemclock.h GstSystemClock: Add GST_CLOCK_TYPE_TAI 2020-01-27 17:16:14 +00:00
gsttaglist.c taglist: Remove (scope call) annotation from gst_tag_register() 2019-01-24 07:52:34 +00:00
gsttaglist.h taglist: Fix broken empty set character in code 2019-11-03 19:06:58 +00:00
gsttagsetter.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gsttagsetter.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gsttask.c Update for g_type_class_add_private() deprecation in recent GLib 2018-06-24 12:49:14 +02:00
gsttask.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsttaskpool.c gsttaskpool: Do not block tasks while cleaning up the taskpool 2019-03-08 17:27:30 +01:00
gsttaskpool.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsttoc.c gst: Add poisoning to more types 2018-08-03 14:31:34 +03:00
gsttoc.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsttocsetter.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gsttocsetter.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gsttracer.c Update for g_type_class_add_private() deprecation in recent GLib 2018-06-24 12:49:14 +02:00
gsttracer.h gsttracer: Add new API to fetch the list of active tracers 2019-07-02 15:13:26 +05:30
gsttracerfactory.c docs: include tracers in the documentation 2017-12-14 14:46:46 +11:00
gsttracerfactory.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsttracerrecord.c tracerrecord: Be stricter while parsing record templates 2019-07-01 13:33:13 +00:00
gsttracerrecord.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsttracerutils.c gsttracerutils: Fix build with disabled tracer hooks. 2019-07-07 20:42:56 +10:00
gsttracerutils.h gst: Documentation fixes 2018-04-02 12:42:30 +02:00
gsttypefind.c Don't use deprecated g_object_newv() 2017-04-08 09:49:59 +01:00
gsttypefind.h doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gsttypefindfactory.c Fix typos in comments and docs 2018-05-01 11:18:03 +01:00
gsttypefindfactory.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsturi.c doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gsturi.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstutils.c utils: Avoid memory merge in gst_util_dump_buffer() 2019-08-21 08:37:50 +02:00
gstutils.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstvalue.c gstvalue: use value_nick for serialization 2019-09-17 01:09:05 +00:00
gstvalue.h doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gstversion.h.in gstversion: Add missing include in .in file. 2015-08-15 13:26:12 +02:00
math-compat.h Fix FSF address 2012-11-03 20:44:48 +00:00
meson.build doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00