1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-23 08:26:56 +00:00
mpv/video/out
wm4 c184e290b0 sdl: prevent concurrent use of SDL in different threads
sdl_gamepad.c and vo_sdl.c both have their own event loops and run in
separate threads. They don't know of each other (and shouldn't). Since
SDL only has one global event loop (why didn't they fix this in SDL2?),
these obviously clash. The actual behavior is relatively subtle, which
event being randomly dispatched to either of the threads.

This is very regrettable. Very.

Work this around. "Fortunately" SDL exposes its global state to some
degree. SDL_WasInit() returns whether a "subsystem" was initialized, and
you could say the one who initialized it owns it. Both SDL_INIT_VIDEO
and SDL_INIT_GAMECONTROLLER implicitly enable SDL_INIT_EVENTS, and the
event loop is indeed the resource that cannot be shared.

Unfortunately, this is still racy, since SDL_InitSubSystem is a second
call, and succeeds if the subsystem is already initialized (increases a
refcount I think). But good enough. Blame SDL for everything.

(I think I made this commit message too long. Nobody cares even.)

Fixes: #7085
2019-10-25 22:17:54 +02:00
..
cocoa cocoa: fix drawing on macOS 10.14 2018-11-13 21:14:29 +02:00
cocoa-cb cocoa-cb: remove get_property_* usages and split up mpv helper 2019-10-06 13:29:48 +02:00
d3d11 vo_gpu: d3d11: prevent wraparound in queued frames calc 2019-10-26 01:14:01 +11:00
gpu vo_gpu, options: don't return NaN through API 2019-10-25 00:25:05 +02:00
hwdec vo_gpu: hwdec_cuda: Synchronise OpenGL Interop 2019-09-28 19:24:24 +03:00
opengl wayland: fix presentation time 2019-10-20 19:50:10 +00:00
placebo video/out/gpu: Add a storable flag to ra_format 2019-07-08 00:59:28 +02:00
vulkan wayland: fix presentation time 2019-10-20 19:50:10 +00:00
win32 vo_gpu: win: remove exclusive-fullscreen detection hack 2017-12-20 14:53:41 +11:00
android_common.c context_android: move common code to a separate file 2019-09-27 00:05:06 +03:00
android_common.h context_android: move common code to a separate file 2019-09-27 00:05:06 +03:00
aspect.c aspect: add video margin options 2019-09-19 20:37:05 +02:00
aspect.h aspect: change license to LGPL 2017-06-17 17:08:51 +02:00
bitmap_packer.c
bitmap_packer.h
cocoa_cb_common.swift cocoa-cb: remove get_property_* usages and split up mpv helper 2019-10-06 13:29:48 +02:00
cocoa_common.h osx: change license of OSX and cocoa files to LGPL 2017-06-24 16:29:22 +02:00
cocoa_common.m {mac,cocoa}: trim trailing null out of macosx_icon when loading it 2018-10-02 00:20:43 +03:00
d3d_shader_420p.h
d3d_shader_yuv.hlsl
dither.c
dither.h
dr_helper.c client API: fix potential deadlock problems by throwing more shit at it 2019-09-26 14:14:49 +02:00
dr_helper.h client API: fix potential deadlock problems by throwing more shit at it 2019-09-26 14:14:49 +02:00
drm_atomic.c drm: rename plane options to better, invariant, names 2018-12-01 15:42:20 +02:00
drm_atomic.h drm: rename plane options to better, invariant, names 2018-12-01 15:42:20 +02:00
drm_common.c drm: refactor page_flipped callback 2019-09-28 14:10:01 +03:00
drm_common.h drm: refactor page_flipped callback 2019-09-28 14:10:01 +03:00
drm_prime.c Add DRM_PRIME Format Handling and Display for RockChip MPP decoders 2017-10-23 21:07:24 +02:00
drm_prime.h Add DRM_PRIME Format Handling and Display for RockChip MPP decoders 2017-10-23 21:07:24 +02:00
filter_kernels.c vo_opengl: refactor scaler LUT weight packing/loading 2017-09-04 13:53:14 +02:00
filter_kernels.h vo_opengl: refactor scaler LUT weight packing/loading 2017-09-04 13:53:14 +02:00
libmpv.h vo_libmpv: support render performance data 2018-11-13 20:43:29 +02:00
vo_caca.c Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
vo_direct3d.c Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
vo_drm.c vo_drm: allow use of zimg 2019-10-25 15:25:49 +02:00
vo_gpu.c Revert "vo: add support for externally driven renderloop and make wayland use it" 2019-10-10 17:41:19 +00:00
vo_image.c image_writer, vo_image: change license to LGPL 2017-06-18 15:45:24 +02:00
vo_lavc.c encode: get rid of the output packet queue 2018-05-03 01:08:44 +03:00
vo_libmpv.c client API: fix potential deadlock problems by throwing more shit at it 2019-09-26 14:14:49 +02:00
vo_mediacodec_embed.c vo_mediacodec_embed: fix forgotten VO_CAP_NOREDRAW→VO_CAP_NORETAIN 2018-02-20 01:59:20 +02:00
vo_null.c vo.c, vo.h, vo_null.c: change license to LGPL 2017-05-10 15:06:20 +02:00
vo_rpi.c vo_gpu: add internal ability to skip osd/subs for rendering 2018-02-11 17:45:51 -08:00
vo_sdl.c sdl: prevent concurrent use of SDL in different threads 2019-10-25 22:17:54 +02:00
vo_tct.c sws_utils: don't force callers to provide option struct 2018-01-18 00:59:07 -08:00
vo_vaapi.c vo: add warning message to vo_vaapi and vo_vdpau 2019-09-14 13:50:10 +02:00
vo_vdpau.c vo: add warning message to vo_vaapi and vo_vdpau 2019-09-14 13:50:10 +02:00
vo_wlshm.c vo_wlshm: use memfd_create() instead of shm_open() 2019-10-17 19:38:04 +02:00
vo_x11.c vo_x11: enable use of zimg 2019-10-20 02:17:31 +02:00
vo_xv.c build: remove POSIX/sysv shared memory test 2017-12-02 23:19:13 +01:00
vo.c input: add gamepad support through SDL2 2019-10-23 09:40:30 +02:00
vo.h Revert "vo: add support for externally driven renderloop and make wayland use it" 2019-10-10 17:41:19 +00:00
w32_common.c w32_common: avoid unnecessary sprintfs 2019-05-10 20:47:05 +10:00
w32_common.h w32_common, w32_keyboard: change license to LGPL 2017-06-24 12:54:45 +02:00
wayland_common.c wayland: don't get data device if wl_seat is null 2019-10-22 02:29:53 +00:00
wayland_common.h wayland: fix presentation time 2019-10-20 19:50:10 +00:00
win_state.c win_state: silence a valgrind warning 2019-09-19 20:37:05 +02:00
win_state.h x11: pseudo HiDPI scaling 2017-01-19 16:31:54 +01:00
x11_common.c x11: fix ICC profiling for multiple monitors 2019-09-21 15:36:16 +02:00
x11_common.h x11: fix ICC profiling for multiple monitors 2019-09-21 15:36:16 +02:00