gstreamer/subprojects
Thibault Saunier 96cf1f8c8e ges: asset: Avoid trying to load twice the same asset
When requesting an asset from different threads we had no
guarantee that during the time we lookup an asset (which didn't exist)
and the time we create the asset with the same type/ID another thread
could not end up doing the same thing. In turns we could end up with
2 different threads loading the exact same asset and the cache
basically forgetting about one of the entries meaning that the user
would never get notified about one of those being ready to be used.

There was also the case when requesting "sync" where the user was
requesting an asset while another thread is creating it so it was
still in "ASSET_INITIALIZING" state, meaning that the returned asset
would be NULL which would be considered as an error in apps.

Since the cache lock is recursive we can just take it during the whole
ges_asset_request_async call and have other method still hold it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5732>
2023-12-01 21:51:57 +00:00
..
gst-devtools docs: Add documentation for GST_VALIDATE_LAUNCHER_DEBUG 2023-11-29 14:05:24 +00:00
gst-docs doc/pipeline-manipulation: mention "insertbin" and "switchbin" 2023-11-17 01:09:49 +01:00
gst-editing-services ges: asset: Avoid trying to load twice the same asset 2023-12-01 21:51:57 +00:00
gst-examples gstplay: Add a minimal documentation header 2023-11-11 10:48:27 +00:00
gst-integration-testsuites interaudiosink: Ensure adapters don't store buffers with audio meta 2023-09-28 10:26:33 +00:00
gst-libav avviddec: Unlock stream lock while waiting for decoded frame 2023-11-16 18:02:30 +00:00
gst-plugins-bad mpegtsmux: allow attaching PCR to non-PES streams 2023-12-01 18:01:34 +00:00
gst-plugins-base appsrc: Fix flow return when buffer is dropped 2023-12-02 01:09:59 +09:00
gst-plugins-good qtdemux: Don't overflow sample index 2023-12-01 13:34:12 +00:00
gst-plugins-ugly meson: Fix MSVC build with GST_DISABLE_GST_DEBUG 2023-11-03 13:31:03 +00:00
gst-python gst-python: Fix API call for Python 3.13 2023-11-03 21:02:48 +05:30
gst-rtsp-server rtsp-server: Unprepare media that is in error state 2023-11-08 14:39:01 +00:00
gstreamer gstpromise: Added GST_IS_PROMISE() macro 2023-11-28 15:41:49 -07:00
gstreamer-sharp gst-omx: Retire the whole package 2023-07-16 19:10:03 +00:00
gstreamer-vaapi vaapi: add device env to plugin dependencies 2023-11-17 03:27:45 +00:00
macos-bison-binary macos-bison: Update to 3.8.2 and add an ARM64 build 2023-08-31 07:50:43 +00:00
packagefiles directxmath.wrap: Fix cpuid mismatch on MinGW 2023-11-20 20:08:57 +00:00
win-flex-bison-binaries
win-nasm
win-pkgconfig win: add new win-pkgconfig subproject 2023-07-21 06:37:45 +00:00
avtp.wrap
bindinator.wrap
cairo.wrap cairo.wrap: Bump to latest to fix MSYS2 build failure 2023-07-12 21:17:25 +00:00
dav1d.wrap meson: add missing source_filename in the dav1d wrap 2023-04-03 14:29:36 +00:00
directxmath.wrap directxmath.wrap: Fix cpuid mismatch on MinGW 2023-11-20 20:08:57 +00:00
dssim.wrap
dv.wrap
expat.wrap meson: Update some more wraps 2022-12-10 15:13:09 +00:00
fdk-aac.wrap
FFmpeg.wrap
fontconfig.wrap meson: Provide fontconfig dep from the subproject 2023-07-20 11:00:35 +00:00
freetype2.wrap
fribidi.wrap fribidi.wrap: Move to tarball, bump, provide dep 2023-07-12 21:17:25 +00:00
gl-headers.wrap
glib-networking.wrap subprojects: update glib-networking to 2.74.0 and switch to file wrap 2022-11-18 00:51:48 +00:00
glib.wrap subprojects: update glib wrap to 2.78.0 2023-10-16 18:16:40 +00:00
gobject-introspection.wrap gi: add support for introspection with subprojects 2023-07-21 06:37:45 +00:00
graphene.wrap meson: Use tarball for graphene instead of git 2023-07-20 11:00:35 +00:00
gst-plugins-rs.wrap gst-plugins-rs: Track main branch again 2023-01-24 19:08:50 +00:00
gtk-sharp.wrap
gtk.wrap gtk: Update subproject from 4.9.2 to 4.10.3 2023-07-19 07:38:36 +00:00
harfbuzz.wrap harfbuzz.wrap: Bump to latest to fix MSYS2 build failure 2023-07-12 21:17:25 +00:00
json-glib.wrap
lame.wrap meson: Update lame to -7 which contains the def file fix 2022-12-19 01:43:08 +05:30
libdrm.wrap
libffi.wrap libffi: fix wrap file to provide the libffi dependency 2023-07-21 06:37:45 +00:00
libgudev.wrap meson: Add a wrap file for libgudev 2023-04-19 22:47:19 +00:00
libjpeg-turbo.wrap
liblc3.wrap lc3: fix pkg-config file lookup 2023-08-08 22:12:29 +00:00
libmicrodns.wrap
libnice.wrap libnice: disable gst tests in static mode 2023-05-31 15:17:11 +00:00
libopenjp2.wrap meson: Update some more wraps 2022-12-10 15:13:09 +00:00
libpng.wrap
libpsl.wrap meson: Ensure that soup plugin is built on Windows 2023-07-15 05:06:35 +00:00
libsoup.wrap subprojects: switch libsoup to a file wrap 2022-11-18 00:56:25 +00:00
libsrtp2.wrap subprojects: Update libsrtp2 wrap to v2.5.0 2023-02-01 10:34:35 +00:00
libva.wrap subprojects: libva: Pin to 2.19.0.pre1 (1c58941) 2023-06-15 21:14:29 +00:00
libwpe.wrap
libxml2.wrap libxml2: update to 2.10.3-4 2023-06-22 08:38:22 +00:00
ntv2.wrap Add subproject for building the AJA NTV2 SDK from github 2023-10-26 09:26:45 +03:00
ogg.wrap
openh264.wrap
opus.wrap
orc.wrap orc: update subproject wrap to 0.4.34 2023-05-30 01:21:20 +00:00
pango.wrap pango.wrap: Bump to 1.50.14, remove merged patch 2023-07-12 21:17:25 +00:00
pcre2.wrap meson: Force pcre2 to be provided by a subproject on macOS 2023-07-20 11:00:35 +00:00
pixman.wrap meson: Fix pixman build on ARM64 macOS 2023-07-20 11:00:35 +00:00
proxy-libintl.wrap
pycairo.wrap
pygobject.wrap meson: Allow sysdeps to be forced as fallback subprojects 2023-02-06 09:26:02 +00:00
sqlite3.wrap meson: Update some more wraps 2022-12-10 15:13:09 +00:00
vorbis.wrap
vpx.wrap subprojects: Add libvpx wrap 2023-08-08 18:08:24 +00:00
webrtc-audio-processing.wrap meson: Update webrtc-audio-processing wrap to 1.3 2023-09-05 11:27:17 -04:00
wpebackend-fdo.wrap
x264.wrap
zlib.wrap meson: Update some more wraps 2022-12-10 15:13:09 +00:00