David Gow 25f9e32b0e wayland: Don't let multiple threads dispatch wayland events at once
wl_display_dispatch() will block if there are no events available, and
while we try to avoid this by using SDL_IOReady() to verify there are
events before calling it, there is a race condition between
SDL_IOReady() and wl_display_dispatch() if multiple threads are
involved.

This is made more likely by the fact that SDL_GL_SwapWindow() calls
wl_display_dispatch() if vsync is enabled, in order to wait for frame
events. Therefore any program which pumps events on a different thread
from SDL_GL_SwapWindow() could end up blocking in one or other of them
until another event arrives.

This change fixes this by wrapping wl_display_dispatch() in a new mutex,
which ensures only one thread can compete for wayland events at a time,
and hence the SDL_IOReady() check should successfully prevent either
from blocking.
2021-10-02 11:03:20 -04:00
2021-09-10 19:49:47 -07:00
2021-02-22 15:44:32 +03:00
2021-05-15 00:22:50 +03:00
2021-09-24 04:03:24 +03:00
2018-08-21 13:29:21 -07:00
2021-08-19 00:10:59 +02:00
2018-08-21 13:29:21 -07:00
2021-08-19 00:10:59 +02:00
2018-08-21 13:29:21 -07:00
2020-12-22 17:00:28 +03:00
2021-08-10 14:50:43 -07:00

Simple DirectMedia Layer (SDL) Version 2.0

https://www.libsdl.org/

Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games.

More extensive documentation is available in the docs directory, starting with README.md

Enjoy!

Sam Lantinga (slouken@libsdl.org)

Description
Simple Directmedia Layer
Readme 92 MiB
Languages
C 56.9%
C++ 36.4%
Objective-C 2.3%
Shell 1.3%
M4 1%
Other 2%