Ryan C. Gordon
910e040e9e
aaudio: Block the audio device thread when in the background.
...
Fixes #8748 .
2024-01-19 15:10:43 -05:00
Ryan C. Gordon
cc7fe8c255
x11: XI_Motion should mark the global mouse position as changed.
...
Otherwise we'll miss it when XWarpPointer() is used. x11vnc may do this to
manage mouse input in some circumstances, so it can be possible for _all_
mouse motion to go through this path, breaking SDL_GetGlobalMouseState().
Thanks to @chrismile for all the detective work to figure this out!
Fixes #8827 .
2024-01-18 15:10:16 -05:00
Ryan C. Gordon
f7f9478caf
docs: Note SDL_UpdateWindowSurfaceRects can update beyond specified areas.
...
Reference Issue #8825 .
2024-01-16 15:23:56 -05:00
Ryan C. Gordon
c69e858e7a
audio: Patched to compile (mixed declarations and code).
2024-01-16 10:07:14 -05:00
Ryan C. Gordon
1e2f311811
audio: backport SDL3's audio datatype converters.
...
These are faster and more precise.
This did not change the Uint16 versions (as SDL3 dropped them, and honestly
no one should be using them in SDL2), nor the NEON converters (as this was
not changed in SDL3, so far).
Fixes #8786 .
2024-01-16 10:04:09 -05:00
Ryan C. Gordon
61cd57d378
cocoa: Resync modifier keypressed on NSEventTypeFlagsChanged event.
...
Fixes #7507 .
(cherry picked from commit 70b65d4170 )
2023-11-29 21:40:30 -05:00
Ryan C. Gordon
d42fa25a9e
test: SDLTest_PrintEvent now reports key event mod state.
2023-11-28 13:07:56 -05:00
Ryan C. Gordon
7d25a443c4
cocoa: Use -[NSApplicationDelegate applicationSupportsSecureRestorableState].
...
This prevents warnings at startup on macOS Sonoma (14.0).
2023-11-28 12:24:33 -05:00
Ryan C. Gordon
3fbaf737ef
test: Removed unnecessary line added by copy/paste error.
2023-11-28 12:11:13 -05:00
Ryan C. Gordon
258849c9bc
test: testwm2 now displays keyboard mod state.
2023-11-28 12:05:02 -05:00
Ryan C. Gordon
4339647d90
render: Clip lines before Bresenham algorithm generates points.
...
Otherwise, a massive line might generate gigabytes worth of points to render,
which the backend would simply throw away anyhow.
Fixes #8113 .
2023-11-24 19:33:04 -05:00
Ryan C. Gordon
a391dd5fef
rect: Avoid numeric overflow on massive lines in SDL_IntersectRectAndLine.
...
Reference Issue #8301 .
Reference Issue #8113 .
2023-11-24 19:33:04 -05:00
Ryan C. Gordon
e9b4869372
opengl: Creating a texture trashes the cached texturing state, fix it.
...
Reference Issue #7194 .
2023-11-23 20:00:01 -05:00
Ryan C. Gordon
0a6b5abf45
render: GL-based renderers should treat adaptive vsync as vsync being enabled.
...
Fixes #8004 .
2023-11-23 18:29:19 -05:00
Ryan C. Gordon
d8102bf660
x11: Deal with difference in GLX_EXT_swap_control_tear behavior.
...
Mesa and Nvidia handle it differently, and one or the other may fix their
implementation in the future, so test which way it works at runtime.
Reference Issue #8004 .
(cherry picked from commit 74a2542564 )
2023-11-23 18:17:25 -05:00
Ryan C. Gordon
0e9d050296
psp: Hook up event subsystem init/quit.
...
Fixes #8554 .
2023-11-22 17:59:36 -05:00
Ryan C. Gordon
87875a49b4
Removed some function declarations that don't actually exist.
...
Reference Issue #8554 .
2023-11-22 17:54:57 -05:00
Ryan C. Gordon
cb5b8c9747
testshader: Don't make local variables with the same name as GL entry points.
...
Reference Issue #2706 .
2023-11-20 15:10:30 -05:00
Ryan C. Gordon
c331b64d79
audio: Tighten up possession of detectionLock during device open.
...
We don't need it for most of the time, and holding it during the backend's
OpenDevice upsets ThreadSanitizer vs our PulseAudio code.
Fixes #7427 .
2023-11-20 01:01:49 -05:00
Ryan C. Gordon
e51760e111
audio: Wait for device thread to set device->threadid before continuing.
...
This fixes a (likely harmless) race condition in `is_in_audio_device_thread`.
Reference Issue #7427 .
2023-11-19 12:26:51 -05:00
Ryan C. Gordon
42d979a231
audio: Just use the system default stack size for the device thread.
...
Fixes #7367 .
2023-11-19 11:10:29 -05:00
Ryan C. Gordon
065d80716b
hidapi: Avoid memcpy'ing to NULL.
...
(This fix was originally from @themightyoarfish on GitHub. Thanks!)
Fixes #8428 .
Reference PR #8431 .
(cherry picked from commit c6d9fb1ad7 )
2023-11-06 13:50:49 -05:00
Ryan C. Gordon
9d7feaaf9e
coreaudio: If paused, clear any pending stream data.
...
This makes sure stuff that was still pending for conversion/resampling doesn't
pop in later when the device is unpaused again.
Fixes #8485 .
2023-11-06 09:57:00 -05:00
Ryan C. Gordon
cba6090398
n3ds: Check that audio thread name starts with "SDLAudioP"
...
The string has a number after it, so a basic SDL_strcmp() will never match.
Reference PR #8346 .
2023-10-24 23:58:00 -04:00
Ryan C. Gordon
d8b34b0993
pulseaudio: Stop the threaded mainloop before destroying the context.
...
Otherwise, we might trigger an assertion in libpulse.
Reference Issue #8348 .
(cherry picked from commit 10fab3a39e )
2023-10-13 09:36:06 -04:00
Ryan C. Gordon
2849ca404e
x11: Properly check for XInput2 support before using it.
...
This specifically fixes a crash in X11_WarpMouseInternal if XInput2 was
missing at runtime, but also cleans up a few other existing checks.
Fixes #8378 .
(cherry picked from commit 82f54af617 )
2023-10-11 01:09:46 -04:00
Ryan C. Gordon
32587bd7de
Sync wiki -> header
2023-10-10 10:19:51 -04:00
Ryan C. Gordon
60070d0b3d
emscripten: Restore compatibility with existing emsdk releases.
...
(cherry picked from commit 5008521538 )
2023-09-20 14:35:51 -04:00
Ryan C. Gordon
ce32c44b54
docs: Added Emscripten filesystem notes.
2023-09-09 21:22:45 -04:00
Ryan C. Gordon
818a26f21b
docs: Corrected/improved some Emscripten docs.
2023-09-09 21:22:45 -04:00
Ryan C. Gordon
5e6a851d6c
docs: Fixed some Emscripten details
2023-09-09 21:22:45 -04:00
Ryan C. Gordon
f788a671e4
docs: Remove "more on this later" comment for something already covered.
2023-09-09 21:22:45 -04:00
Ryan C. Gordon
bd77b9a0ce
docs: Rewrote README-emscripten.md
...
Fixes #6453 .
2023-09-09 21:22:45 -04:00
Ryan C. Gordon
25eca09c7e
include: Replaced old Bugzilla URL.
...
(cherry picked from commit fb13770353 )
2023-09-07 10:53:02 -04:00
Ryan C. Gordon
9237f8edc1
video: Fixed small memory leak when disconnecting a display.
2023-08-23 16:27:10 -04:00
Ryan C. Gordon
1f4e86d61c
video: Minor cleanup in SDL_VideoQuit.
...
(This code changed in SDL3, no need to cherry-pick it to there.)
2023-08-23 16:27:09 -04:00
Ryan C. Gordon
04ff593bf5
emscriptenaudio: Fire the capture silence_callback at an interval.
...
Previously it was using setTimeout, not setInterval, so it would only fire
once, which was obviously a mistake.
(cherry picked from commit fb79211732 )
2023-08-23 16:25:30 -04:00
Ryan C. Gordon
ddbbef88e3
emscriptenaudio: Don't bother undefining things about to be unreachable.
...
Since the top-level table is getting undefined, all the things in it will
be unreachable and eligible for garbage collection without explicitly
nulling them out.
(cherry picked from commit 5191b20541 )
2023-08-23 16:24:09 -04:00
Ryan C. Gordon
ae7f54f514
emscriptenaudio: Deal with blocked audio devices better.
...
Now, if the AudioContext starts in a "suspended" state, because the browser
blocked it from playing by default, we we run the audio "thread" in a timer
and throw away the generated audio. Once the AudioContext is allowed to
resume, we clear this timer.
The end result is that the app will continue to drain its audio queue
instead of consuming more memory over time (and, if it relies on an audio
callback to make progress, continue to run!), with the effect that the
page is merely silent but otherwise functioning as intended.
Once the user interacts with the page and the browser permits the the
AudioContext to run for real, audio should still be in sync, instead of
just starting to play audio that might now be at least several seconds behind.
(cherry picked from commit fd75a4ca05 )
2023-08-23 16:21:49 -04:00
Ryan C. Gordon
8087c0a5d2
include: fixed a typo in SDL_RenderGetMetalCommandEncoder docs.
2023-08-06 10:45:11 -04:00
Ryan C. Gordon
dc5dda0f31
cocoa: Ignore first mouse motion event after enabling relative mode.
...
Fixes #7918 .
2023-08-01 18:34:03 -04:00
Ryan C. Gordon
3030fd815c
x11: Blocking for window maximization should wait 100 ms, not 1000.
...
Reference Issue #7070 .
2023-08-01 13:55:04 -04:00
Ryan C. Gordon
5c3df60ec9
Revert "x11: check if window size/position has changed during SDL_ShowWindow."
...
This reverts commit aa536217b3 .
2023-08-01 12:10:52 -04:00
Ryan C. Gordon
b9d16dac4e
pulseaudio: Some fixes that seem to avoid an assertion in libpulse.
...
- Make sure the hotplug thread has hit its main loop before letting
DetectDevices continue.
- Don't unref the context subscription operation until it completes
(or we are shutting down).
I'm not sure which change fixed the problem, but at least one of them
appears to have done so.
Reference Issue #7971 .
2023-07-12 23:29:39 -04:00
Ryan C. Gordon
3aba9d4473
pulseaudio: We should be using libpulse, not libpulse-simple.
...
This probably worked by a quirk of the dynamic loader...?
(cherry picked from commit 6aef14fb2d )
2023-07-12 16:43:05 -04:00
Ryan C. Gordon
832b524180
pulseaudio: don't wait on pa_context_subscribe in hotplug thread.
...
This risks blocking the thread if disaster ensues, and we can wait in the
thread's main loop for subscription as well anywhere else.
Reference Issue #7971 .
(cherry picked from commit 956b18f50c )
2023-07-12 16:05:09 -04:00
Ryan C. Gordon
e65ca61957
khronos: Fixed a typo in a Vulkan header, to match upstream.
...
Fixes #7916 .
(cherry picked from commit c0bd18f023 )
2023-07-03 11:04:41 -04:00
Ryan C. Gordon
769bf2ebcc
rwops: Use SetFilePointerEx on Windows for appending writes.
...
Fixes #7900 .
2023-07-01 00:30:23 -04:00
Ryan C. Gordon
1453cfa4e9
pulseaudio: Move to a threaded mainloop.
...
This used to create a context and mainloop for each device and the hotplug
thread, but this isn't correct use of PulseAudio's API. Now we have a
single context and a pa_threaded_mainloop, and all threads cooperate around
it.
This was originally from SDL3, in 35292d7dba .
Reference Issue #7883 .
Reference Issue #7427 .
2023-06-28 20:32:14 -04:00
Ryan C. Gordon
2afb49ba9a
cocoa: Warp mouse to center of window before enabling relative mouse.
...
This prevents the case where the mouse might be at the edge of the
window when enabling relative mode, which confuses macOS, at it
might believe the user is attempting to resize the window.
Fixes #6994 .
2023-06-11 12:47:26 -04:00
Ryan C. Gordon
aa536217b3
x11: check if window size/position has changed during SDL_ShowWindow.
...
Fixes #4216 .
(cherry picked from commit 49b5cfa6c5 )
2023-06-07 15:46:59 -04:00
Ryan C. Gordon
379a6f4dab
x11: Attempt to wait for SDL_MaximizeWindow to complete before returning.
...
Fixes #7070 .
2023-05-30 17:04:31 -04:00
Ryan C. Gordon
d275851dfb
windows: Don't allow non-resizable windows to be maximized.
...
Fixes #6346 .
2023-05-29 14:47:53 -04:00
Ryan C. Gordon
a9ded76dff
VisualC: turn on multi-processor compilation.
...
This makes SDL2 build in 12 seconds, instead of 50, on my Windows
workstation, with Visual Studio.
2023-05-29 14:47:52 -04:00
Ryan C. Gordon
48e71ae87b
wasapi: Deal with HDMI or DisplayPort-based audio devices.
...
They can vanish for UP TO EIGHT SECONDS...!
This is for devices that connect to HDMI/DisplayPort/etc, where it
presumably has to wait for a display to get up and running before it
can play audio through it, so one can see the audio device fail when
changing display modes, or the system returning from sleep. Since this
can be triggered by a game changing video resolutions at startup (either
before or after opening the audio device!), it's important to deal with.
In normal conditions, it shouldn't take this long to open or recover an
audio device, but this is better than unexpectedly losing the device
in this situation.
Fixes #7044 .
Fixes #5571 .
2023-05-26 19:15:28 -04:00
Ryan C. Gordon
a535cc62a0
video: Only specify some GL context attributes if not the explicit default.
...
Just in case it upsets some OpenGL drivers unnecessarily.
Fixes #7730 .
(cherry picked from commit d4bc393efe )
2023-05-25 10:10:03 -04:00
Ryan C. Gordon
df9d0fb332
power: On Linux, compare status strings as case-insensitive.
...
In case something reports "Device" when we expected "device", etc.
Reference Issue #6835 .
2023-05-18 13:26:55 -04:00
Ryan C. Gordon
4a0b9522b6
audio: Load .WAV files with format->blockalign==0.
...
In theory this is illegal, but legit wavefiles in the field do it, and
it's easy to bump it to 1 for general purposes.
Formats with more specific alignment requirements already check for them
separately.
Fixes #7714 .
(cherry picked from commit 2e646c7141 )
2023-05-17 20:09:28 -04:00
Ryan C. Gordon
32999798e0
dynapi: Accept a comma-separated list of libraries to attempt to load.
...
First one to load and have the necessary symbol is the one we accept,
if any. Once we accept one, we won't try loading others.
Fixes #7613 .
2023-05-17 20:03:17 -04:00
Ryan C. Gordon
0eea92c8fc
blit: Add a case for 8-bit blits that sdl12-compat exposed.
...
sdl12-compat can get into a state where a color-keyed surface is
marked for blending, but wants to blend with full alpha (which
is the same as _not_ blending), so rather than fail to find a
blitter in that case, it just selects the colorkey blitter.
Reference https://github.com/libsdl-org/sdl12-compat/issues/233
2023-05-16 14:38:44 -04:00
Ryan C. Gordon
86786ed544
coreaudio: Flush/stop the AudioQueue before disposing of it.
...
Otherwise, a CoreAudio thread lingers forever, and coreaudiod eats CPU
until the SDL process terminates.
Fixes #7689 .
2023-05-08 14:25:01 -04:00
Ryan C. Gordon
446e0943da
wasapi: Force WIN_CoInitialize duing device open.
...
Otherwise this won't work if you open a device on a background thread.
Fixes #7478 .
2023-03-17 08:44:19 -07:00
Ryan C. Gordon
46945354cc
dataqueue: Make thread safe.
...
Each data queue gets its own mutex and each function obtains it.
Fixes #7390 .
(cherry picked from commit 8b9a938413 )
2023-03-02 16:43:44 -05:00
Ryan C. Gordon
f5bb286b76
dataqueue: Removed non-public SDL_ReserveSpaceInDataQueue function
...
This wasn't used, and it was just asking for trouble.
(cherry picked from commit f833e005e1 )
2023-03-02 16:41:58 -05:00
Ryan C. Gordon
e58a8639e3
docs: Removed bogus file from wiki bridge.
...
That was fixed to not do that again by https://github.com/libsdl-org/ghwikipp/commit/7e429a13d385e448dd2efaf014e5aaddb6eff66b
2023-02-28 13:40:35 -05:00
Ryan C. Gordon
5b7b3da701
Sync wiki -> headers.
2023-02-28 12:56:01 -05:00
Ryan C. Gordon
0a0dfdb2f9
wikiheaders: Sort pages before listing them in README/FrontPage.md.
...
(cherry picked from commit 99c38268cd )
2023-02-28 12:29:21 -05:00
Ryan C. Gordon
8572e19327
wikiheaders: Use Windows endlines in the source, Unix in the wiki.
...
(cherry picked from commit 7745c9b3ae )
2023-02-28 12:29:16 -05:00
Ryan C. Gordon
462d95ab4d
wikiheaders: ignore wiki's README/FrontPage.md
...
(cherry picked from commit 6d1e14b792 )
2023-02-28 11:56:20 -05:00
Ryan C. Gordon
a48bb80ea0
wikiheaders: Bridge README files in the docs directory to wiki.
...
Fixes #6026 .
(cherry picked from commit 2506676f34 )
2023-02-28 11:46:46 -05:00
Ryan C. Gordon
37de5d4849
wikiheaders: fixed wikilinks in Markdown code sections.
...
(cherry picked from commit a479633455 )
2023-02-27 23:08:55 -05:00
Ryan C. Gordon
171fba320f
wikiheaders: Fix wikilinks inside code sections a little. Not perfect yet.
...
(cherry picked from commit 5b0351a672 )
2023-02-24 14:30:34 -05:00
Ryan C. Gordon
7abb748134
Sync wiki -> headers.
2023-02-24 11:47:13 -05:00
Ryan C. Gordon
858ae9900e
wikiheaders: fixed see-also conversion
...
(cherry picked from commit d748a454a8 )
2023-02-24 11:46:41 -05:00
Ryan C. Gordon
f87f0fe781
wikibridge: Fixes for manpage generation from Markdown format.
...
(cherry picked from commit 5ff49955ab )
2023-02-24 10:22:28 -05:00
Ryan C. Gordon
b3ea81b33f
wikiheaders: Work to make the wiki exist primarily in Markdown format.
...
This adds a means to mass-convert the whole wiki to Markdown as a one-time
operation, and then some fixes to make --copy-to-headers correctly deal with
Markdown-formatted wiki pages.
(cherry picked from commit 936a51d5cc )
2023-02-24 09:48:37 -05:00
Ryan C. Gordon
9403c9e95a
resampler: Work at double precision on x86-64 machines.
...
We get audio artifacts if we don't work at the higher precision, but
this is painful on CPUs that have to use a software fallback for this,
so for now (that is, until we have a better solution), get better output
on amd64 chips, where the cost is less painful.
(cherry picked from commit 1e5e8e2fda )
2023-02-22 13:29:31 -05:00
Ryan C. Gordon
e6e654e25c
include: Fix symbols in public headers that start with an underscore.
...
Fixes #7352 .
2023-02-20 11:38:26 -05:00
Ryan C. Gordon
7ac43cfb6b
Note that version.rc is public domain.
...
This avoids potential concerns that customizing would qualify a build
of SDL as an "altered source version" under the zlib license.
2023-01-29 11:46:22 -05:00
Ryan C. Gordon
c83428475d
wikiheaders: Link to the SDL3 wiki in the preamble.
...
Reference Issue #6568 .
2023-01-26 14:45:12 -05:00
Ryan C. Gordon
d5680c5d20
wikiheaders: Allow markdown in the wikipreamble string.
...
Reference Issue #6568 .
(cherry picked from commit a089b2ea19404f6dacd083327e13cae888b58993)
2023-01-26 10:23:21 -05:00
Ryan C. Gordon
1069c8931d
wikiheaders: Add a \threadsafety tag to document threading details.
...
Reference Issue #7140 .
(cherry picked from commit 01cba48d18 )
2023-01-26 10:23:08 -05:00
Ryan C. Gordon
e986c7984b
wasapi: Fixed incorrect assertions.
...
Fixes #6795 .
(cherry picked from commit 12486e144b )
2022-12-12 16:08:52 -05:00
Ryan C. Gordon
4bae75387a
docs: Note that you don't need to free SDL_GetDefaultCursor's results.
...
Reference Issue #6777 .
(cherry picked from commit 16f8dfcef9 )
2022-12-09 22:09:39 -05:00
Ryan C. Gordon
69f0223474
dynapi: Abstract out the environment variable name.
...
(cherry picked from commit cc487ffb801f862aec7e2b415e74c563c4d528d5)
2022-11-29 14:15:20 -05:00
Ryan C. Gordon
3f5593d613
cocoa: Patched to compile on macOS SDK < 10.10.
...
Fixes #6586 .
(cherry picked from commit fa5adcafd5 )
2022-11-26 13:59:44 -05:00
Ryan C. Gordon
4ac2d45a06
Testing the wiki, disregard this commit.
2022-11-22 18:12:43 -05:00
Ryan C. Gordon
511bab5bbf
.wikiheaders-options: Move SDL2 documentation to a subdirectory.
...
SDL3 will be the main thing now.
2022-11-22 13:05:08 -05:00
Ryan C. Gordon
a1702d463c
ibus: Try to use org.freedesktop.portal.IBus first if available.
...
This should fix apps that want ibus support inside sandboxed environments
like FlatPak or Snaps.
Fixes #4706 .
2022-11-16 23:39:41 -05:00
Ryan C. Gordon
bb0b8adacc
mac: Fix handling of deprecated symbol.
...
This needs to check what our deployment target is, not what SDK
is available, since this is a linker symbol and not an enum
value or whatever.
Also removed a copy/paste error that mentioned CoreAudio in
the haptic subsystem.
Fixes #6534 .
2022-11-16 22:04:04 -05:00
Ryan C. Gordon
389ffab733
Code style fixes, etc.
...
Reference PR #6345 .
2022-11-16 12:53:48 -05:00
Ryan C. Gordon
7ebdae5dc9
cocoa: Fix OpenGL deprecation warning.
2022-11-16 11:45:41 -05:00
Ryan C. Gordon
7c760f7f79
cocoa: Update CVDisplayLink timing when screen changes.
...
This handles both the window moving to a new display and
changing the current display's refresh rate in System
Preferences
Reference Issue #4918 .
2022-11-16 11:35:27 -05:00
Ryan C. Gordon
1fd66cc890
Revert "cocoa: Backed out CVDisplayLink code for macOS vsync."
...
This reverts commit 04b50f6c6b .
It turns out OpenGL vsync has broken again in macOS 12, so
we're reintroducing our CVDisplayLink code to deal with it,
again.
Reference Issue #4918 .
2022-11-16 11:34:25 -05:00
Ryan C. Gordon
9d67686a5b
haptic: Deal with deprecated macOS symbol.
2022-11-16 10:08:40 -05:00
Ryan C. Gordon
6801d676c0
Revert "pulseaudio: Only use PA_STREAM_ADJUST_LATENCY if buffer isn't super small."
...
This reverts commit d8b1ef42ae .
This turned out to be unnecessary (it was a problem on the user's system,
not an SDL bug).
Reference Issue #6121 .
2022-11-16 09:53:37 -05:00
Ryan C. Gordon
d8b1ef42ae
pulseaudio: Only use PA_STREAM_ADJUST_LATENCY if buffer isn't super small.
...
Fixes #6121 .
2022-11-15 22:44:31 -05:00
Ryan C. Gordon
44d7b8b91d
egl: Check for a NULL pointer in SDL_EGL_GetProcAddress.
...
This happens on kmsdrm if you try to GetProcAddress before creating
a window.
Fixes #5399 .
2022-11-15 13:59:24 -05:00
Ryan C. Gordon
85aa9b8b6f
wasapi: Favor the system resampler again, for now.
...
Reference Issue #5538 .
2022-11-11 13:48:11 -05:00
Ryan C. Gordon
1008cc8e5f
video: Add some braces to match SDL coding style.
2022-11-09 12:55:27 -05:00