Commit Graph
100 Commits
Author SHA1 Message Date
Ryan C. Gordon 53dea98309 x11: revert checks for _NET_WM_STATE_FULLSCREEN changes.
This reverts commit 85977354fb.
This reverts commit 0249df9d96.

Fixes #5572.
Reopens #5390.
2022-04-25 14:00:04 -04:00
Ryan C. Gordon d4a01bfef0 os2: SDL_DestroyMutex should ignore NULL mutexes.
Every other backend does this, so this should match, now.
It's possible this was harmless, but we can avoid the system call
and the (likely?) debug message when it fails, though!
2022-04-20 14:08:09 -04:00
Ryan C. Gordon 49a2e4b0ea x11: Revert "Fix keymap updating for X11 backend"
This reverts commit de6d290266.

This patch had multiple issues, discussed in #5520.
2022-04-19 00:37:39 -04:00
Ryan C. Gordon c1336b21ed hints: Make SDL_VIDEODRIVER and SDL_AUDIODRIVER formal hints.
They were just environment variables before.

Fixes #5528.
2022-04-17 11:31:55 -07:00
Ryan C. Gordon 634b9edc7f cmake: Fixed indenting and some oldschool endif(TEXT) things. 2022-04-15 20:50:55 -04:00
Ryan C. Gordon 67e0f546c5 x11: Update the display when the WM changes a window's fullscreen state.
Fixes #5390.
2022-04-15 18:25:53 -04:00
Ryan C. Gordon 727eef7064 audio: SDL_ConvertStereoToMono_SSE3 missed an unaligned load. 2022-04-09 10:13:37 -04:00
Ryan C. Gordon 85977354fb x11: Treat WM setting the window "fullscreen" like FULLSCREEN_DESKTOP.
Fixes #5390.
2022-04-07 09:15:27 -04:00
Ryan C. Gordon 0249df9d96 x11: Try to keep SDL_WINDOW_FULLSCREEN* in sync with window manager.
So if Gnome/KDE/etc have a keyboard shortcut or titlebar decoration to
make any window go fullscreen (with the _NET_WM_FULLSCREEN flag on the
_NET_WM_STATE property), we update the SDL window flag.

Fixes #5390.
2022-04-05 23:18:10 -04:00
Ryan C. Gordon 8bae343f25 x11: when waiting on fullscreen changes, not window position _and_ size.
This makes sure the window doesn't have outdated values if you try to access
them (or call something that does, like SDL_SetWindowMinimumSize).

Fixes #5233.
2022-04-05 22:21:57 -04:00
Ryan C. Gordon a5672b858e x11: Wait a bit to see if window pos changes when changing fullscreen.
Helps prevent window from moving to 0,0 when leaving fullscreen.

Fixes #4749.
2022-04-05 11:10:41 -04:00
Ryan C. Gordon ea7d5307ac emscripten: Proxy SDL_GetUsableDisplayBounds to the main thread. 2022-03-31 14:12:34 -04:00
Ryan C. Gordon 1c7bf478ae x11: Ignore BadValue for extremely small XRRSetScreenSize resolutions.
Reference Issue #4840.
2022-03-31 10:09:47 -04:00
Ryan C. Gordon 7e15ad2fc4 x11: Catch X11 errors in X11_SetWindowPosition and X11_SetWindowSize.
The functions can go south if other operations are in progress, like
X11_SetWindowBordered, which might be doing something traumatic behind the
scenes of the window manager.

We can't make these tasks totally synchronous, which would fix the problem,
because not only can the window manager block however long it wants, it might
also decide to deny our requests without any notification, so we'd be waiting
forever for a window change that isn't coming.  :(

Fixes #5274.
2022-03-30 14:23:51 -04:00
Ryan C. Gordon 3425e9950e stdinc: SDL_COMPILE_TIME_ASSERT defines shouldn't have a semicolon. 2022-03-30 10:13:47 -04:00
Ryan C. Gordon 7bc498d325 direct3d: Implement missing blend operations.
This is only for Direct3D 9; Direct3D 11 already had this implemented.

Fixes #5375.
2022-03-27 09:14:07 -04:00
Ryan C. Gordon 94ed6b0a54 README-windows: Notes on building with Visual Studio/LLVM.
Fixes #5186.
2022-03-26 08:55:26 -04:00
Ryan C. Gordon 5acb4b70ab README-windows: Wordwrap text file.
This makes for easier reading outside of a formal Markdown viewer.
2022-03-26 08:50:25 -04:00
Ryan C. Gordon 26bfee8578 README-windows: Convert to actual Markdown text. 2022-03-26 08:47:46 -04:00
Ryan C. Gordon beecae31f6 testshader: use SDL_malloc instead of SDL_stack_alloc. 2022-03-26 08:42:09 -04:00
Ryan C. Gordon d597a9b431 x11: Minor cleanups and corrections in X11_ShowMessageBox.
Reference issue #3254.
2022-03-24 14:25:34 -04:00
Ryan C. Gordon 4fe7b2cbd1 static analysis: Fixed several complaints from codechecker.
There are still some pending Objective-C specific issues.

Reference issue #4600.
2022-03-24 11:00:43 -04:00
Ryan C. Gordon 8df045cc7d stdlib: just cast iconv()'s 2nd arg to void *.
This makes the compiler happy (enough) regardless of whether the C runtime
headers think this argument should be const or not.

Fixes #4966.
2022-03-22 16:14:06 -04:00
Ryan C. Gordon f782abe5f0 hints: Added SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE.
Fixes #2349.
2022-03-22 09:54:29 -04:00
Ryan C. Gordon 2b3c16eb5b Sync wiki -> headers. 2022-03-20 23:17:14 -04:00
Ryan C. Gordon d81fee7623 SDL_Rect: Added floating point versions of all the rectangle APIs.
Fixes #5110.
2022-03-19 10:35:24 -04:00
Ryan C. Gordon 4d9bef604a SDL_Rect: minor code cleanups. 2022-03-19 10:35:23 -04:00
Ryan C. Gordon c573ebe143 SDL_UnionRect: If both rects are empty, zero out the result struct. 2022-03-19 10:35:23 -04:00
Ryan C. Gordon 1ee196b483 INSTALL.txt: Say "macOS" instead of "Mac OS X" in modern times.
Reference Issue #5407.
2022-03-15 13:07:55 -04:00
Ryan C. Gordon 3ab739afff cmake: Make test code use proper C main functions.
Fixes #5021.
2022-03-13 12:10:52 -04:00
Ryan C. Gordon b946e31ec8 video: Allow unaccelerated SDL_HINT_FRAMEBUFFER_ACCELERATION renderers.
If the app requested a specific renderer, even if it's not the optimal path,
let them have it, because they might want to render with a specific GPU API
on top of the framebuffer pixels.

This fixes DosBox-X crashing on startup, which forces the hint to "opengl".
2022-02-23 09:36:06 -05:00
Ryan C. Gordon 60ddb74cfe video: rework how we prepare a texture framebuffer.
Now we see if we can create an SDL_Renderer, and if that renderer reports
itself as "accelerated," and added some initial heuristics to the OpenGL
renderer to make better decisions about what qualifies as "accelerated."

This adds some FIXMEs that might be merely hypothetical, and removes the
old OpenGL checks from the video subsystem that probably weren't meaningful
in modern times. This will definitely need to improve the existing list
in the GL renderer, to catch things like llvmpipe, etc.

Reference issue #4624.
2022-02-23 09:36:06 -05:00
Ryan C. Gordon 293a0aa80e opengl: If GL version >= 2.0, NPOT textures are supported, so favor them.
Fixes #5041.
2022-02-22 10:54:21 -05:00
Ryan C. Gordon 43f0271b4e Revert "fix compiler warnings in SDL_windows_gaming_input.c"
This reverts commit ca36cdb185.

The older Windows SDK's headers are wrong, and this change would crash if
you hotplug a device.
2022-01-28 20:40:19 -05:00
Ryan C. Gordon e0236c02ce audio: Removed an unnecessary commented-out line. 2022-01-28 20:40:19 -05:00
Ryan C. Gordon 19ae71b2db video: Don't add SDL_WINDOW_(METAL|OPENGL) to new windows if unsupported.
Fixes #4656.

(Better than the previous fix in 3044310518dbb2d4814b32c6521f332b8d69aae5.)
2022-01-27 11:49:15 -05:00
Ryan C. Gordon 3044310518 video: Don't add SDL_WINDOW_METAL to new windows if not using Cocoa or UIKit.
Fixes #4656.
2022-01-26 21:10:15 -05:00
Ryan C. Gordon f37e4a94d3 video: Don't check if we can use a "texture framebuffer" until needed.
This prevents SDL from making an OpenGL context and maybe throwing it away
immediately by default. It will now only do it when trying to request a
window framebuffer directly, or creating an SDL_Renderer with the "software"
backend, which makes that request itself.

The way SDL decides if it should use a "texture framebuffer" needs dramatic
updating, but this solves the immediate problem.

Reference Issue #4624.
2022-01-26 17:06:25 -05:00
Ryan C. Gordon ca22b30e46 testgles2: Use vertex buffer objects instead of client-side arrays.
GLES2 always has them, and they work without hacks on Emscripten, unlike
client-side arrays.

I cleaned it up slightly, but this patch was mostly written by @bing2008.

Fixes #5258.
2022-01-24 22:41:41 -05:00
Ryan C. Gordon 426c1f4b85 opengles2: fix comment about client-side arrays. 2022-01-19 14:28:30 -05:00
Ryan C. Gordon ae9e2149a5 os2-buildbot.sh: Use the 64-bit Watcom binaries.
GitHub Actions is a 64-bit Ubuntu instance. It was only using the 32-bit
binaries because our buildbot put this on the 32-bit Linux host to spread
the CPU load around more evenly.
2022-01-11 21:32:07 -05:00
Ryan C. Gordon 42302d0a59 x11: Let apps specify a custom _NET_WM_WINDOW_TYPE.
Fixes #5185.
2022-01-11 21:17:21 -05:00
Ryan C. Gordon f9b918ff40 opengles2: Use client-side arrays on everything but Emscripten.
Turns out they're much faster!

Fixes #5206.
2022-01-11 19:41:41 -05:00
Ryan C. Gordon 5d07c03613 psp: Force channels to stereo if user requested anything other than mono.
Before it would only clamp to stereo if it also had to resample, which would
fail if the app specified 44100Hz and surround sound.
2022-01-09 08:13:34 -05:00
Ryan C. Gordon c275436f56 opengles2: Batching lines/points used wrong var for summing vertex counts.
Fixed this in the vitagxm backend too, but I don't know what the state of
that code is otherwise.

Reference Issue #5061.
2022-01-09 00:39:02 -05:00
Ryan C. Gordon f62b807174 wikiheaders.pl: Put the manpages in man/man3 2022-01-07 21:39:10 -05:00
Ryan C. Gordon cc2013378d render: Fixed some compiler warnings.
Fixes #5197.
2022-01-07 20:22:51 -05:00
Ryan C. Gordon 6d3b5d66cd psp: draw lines with RenderGeometry, same as with the other renderers. 2022-01-07 18:18:53 -05:00
Ryan C. Gordon 88ac517df0 opengles2: Fix point drawing. 2022-01-07 15:04:04 -05:00
Ryan C. Gordon 5d3f6b0215 wikiheaders.pl: Added support for export to Unix manpages.
This mostly works, but likely needs some tweaking as we examine the output
of various pages.

Fixes #5163.
2022-01-06 15:37:05 -05:00
Ryan C. Gordon 7967c97618 cmake: Do a more thorough test for the old bcm Raspberry Pi libraries.
Fixes #5132.
2022-01-05 21:02:38 -05:00
Ryan C. Gordon 30f895a5f3 Update os2.yml
Specify the WATCOM environment variable in the "run" command line directly, so the home directory gets correct shell expansion.
2022-01-03 21:55:10 -05:00
Ryan C. Gordon 1d918a283c Update os2.yml
Whoops, forgot the `-R` on the chmod command.
2022-01-03 21:52:47 -05:00
Ryan C. Gordon 39fc1e87e5 os2.yml: OpenWatcom install fixes
Make everything in Open Watcom install executable (because none of it is, and this is good enough), and make wget less verbose.
2022-01-03 21:51:12 -05:00
Ryan C. Gordon eb3639d3c5 os2.yml: Fix wget command line
It's a capital O, not lowercase.  :/
2022-01-03 21:47:04 -05:00
Ryan C. Gordon 56813d0203 Create os2.yml
This is a quick test to see if we can cache an OpenWatcom install on a GitHub Actions instance and build for OS/2 with it.
2022-01-03 21:44:17 -05:00
Ryan C. Gordon e4000c0284 video: SDL_GL_GetAttribute needs to operate on FBO 0.
If a different FBO is bound, this would return incorrect results.

Fixes #5082.
2021-12-31 10:32:39 -05:00
Ryan C. Gordon 86c0cf2bb1 software: Draw a single pixel for a line with the same start/end point.
Otherwise it would drop it, which seems like a bug to me, as it normally
fills the endpoint on lines.

Reference #2006.
2021-11-26 14:34:51 -05:00
Ryan C. Gordon d713a68071 pulseaudio: wait until at least 1/8th (!) of the mixbuffer is available.
This is to workaround systems where we hang in playback because the buffer
does not report the space for whatever reason. The system will instead block
in PlayDevice, which always immediately follows WaitDevice in modern times
so this works out, and it seems to keep the device moving forward.

For a future revision, we are either going to clean this up more properly,
or attempt to move to PulseAudio's pa_stream_set_write_callback() API, but
this will do for SDL 2.0.18.

Reference #4387 for discussion and further information.
2021-11-25 22:32:40 -05:00
Ryan C. Gordon ceb9e9a809 cocoa: Removed a debug printf call. 2021-11-21 00:21:41 -05:00
Ryan C. Gordon 18715acb55 cocoa: Position non-left mouse button events in background windows correctly.
Fixes #4828.
2021-11-21 00:14:18 -05:00
Ryan C. Gordon 23b7bdef87 offscreen: Don't fail to create a window because of driver_loaded politics.
Fixes #4922.
2021-11-20 14:12:11 -05:00
Ryan C. Gordon aeff8748a5 configure: Allow building of the "offscreen" video target.
It was CMake-only before this.
2021-11-20 13:35:56 -05:00
Ryan C. Gordon e86d4bde54 test: Makefile should copy unifont file, for testime.c to use. 2021-11-20 13:35:56 -05:00
Ryan C. Gordon 61881eb0a9 docs/README-macos.md: Updated Xcode instructions.
Fixes #960.
2021-11-20 13:14:00 -05:00
Ryan C. Gordon 116a002b14 build-scripts/gcc-fat.sh is no longer supported. Use clang-fat instead.
Reference #4809.
2021-11-19 09:28:36 -05:00
Ryan C. Gordon 3f978c0f93 include: Improved documentation of SDL_RegisterApp and SDL_UnregisterApp. 2021-11-18 15:56:16 -05:00
Ryan C. Gordon 09bf12e035 fnsince.pl: SDL_UnregisterApp() also arrived in 2.0.2. 2021-11-18 15:34:29 -05:00
Ryan C. Gordon 7f70f6e1e2 include: Note that several rwops functions used to be macros before 2.0.10. 2021-11-18 15:31:02 -05:00
Ryan C. Gordon 83024f3299 fnsince.pl: Whoops, it's SDL_RegisterApp and not SDL_SetMainReady in 2.0.2. 2021-11-18 15:27:21 -05:00
Ryan C. Gordon 46f12cc7f7 fnsince.pl: SDL_SetMainReady() originally arrived in SDL 2.0.2. 2021-11-18 15:22:47 -05:00
Ryan C. Gordon 193ab28fe4 Renamed README-macosx.md to README-macos.md 2021-11-14 23:35:50 -05:00
Ryan C. Gordon 4edf2df5ce Unix2dos'd README-macosx.md. 2021-11-14 23:34:46 -05:00
Ryan C. Gordon 73a41f4058 Removed outdated build-scripts/iosbuild.sh
Fixes #1532.
2021-11-14 14:17:36 -05:00
Ryan C. Gordon cb4491ca60 Sync wiki -> header 2021-11-10 16:05:03 -05:00
Ryan C. Gordon a1c125c1f5 fnsince.pl: Report unreleased APIs as part of the next release version.
This keep documentation future-accurate and more importantly: it will
produce correct results before we tag the official release in git, so
they'll be correct in the tag and the release tarball.
2021-11-10 15:40:27 -05:00
Ryan C. Gordon b42ae3dbfe Sync wiki -> header 2021-11-10 15:21:01 -05:00
Ryan C. Gordon 04f42e0468 metal: Deal better with -[CAMetalLayer nextDrawable] returning nil.
Fixes #4863.
2021-11-09 12:03:12 -05:00
Ryan C. Gordon 8f63e9ff68 cmake: use generated SDL_config.h to build SDLmain static lib
Thanks to @toazz for the patch!

Fixes #4829.
2021-11-09 11:13:52 -05:00
Ryan C. Gordon 3a82e432f0 cmake: Moved back to requiring merely CMake 3.0.0.
This means it now works with any CMake released since 2014 instead of 2018.

This was mostly just readding some special cases, and requiring 3.11.0 only
for Windows Stores apps, which isn't unreasonable. The biggest concern is
a Linux distribution not having a recent CMake; most other places will be
manually downloading and installing their own CMake.

Fixes #4930.
2021-11-09 11:06:33 -05:00
Ryan C. Gordon cfdbd6acca docs: Modernized README-macosx.md and cleaned up the Markdown a little.
Reference #960.
2021-11-09 10:51:02 -05:00
Ryan C. Gordon 1a98dcb6aa Revert "include: Updated SDL_config_emscripten.h from emscripten-ports."
Apparently we already had the newer version, sorry!

This reverts commit 6657cbce8d.

Reference issue #4623.
2021-11-08 15:16:18 -05:00
Ryan C. Gordon 6657cbce8d include: Updated SDL_config_emscripten.h from emscripten-ports.
Reference issue #4623.
2021-11-07 20:45:31 -05:00
Ryan C. Gordon 3acb172531 stdlib: SDL_snprintf now adds decimal places for ("%f", 0.0).
This patch was from @Markvy (thanks!).

Fixes #4795.
2021-11-07 09:34:55 -08:00
Ryan C. Gordon 2379c52849 os/2: Don't try to be clever with the 32-bit GetTicks fallback. 2021-11-01 14:28:00 -04:00
Ryan C. Gordon d78cb9e903 testtimer: added SDL_GetTicks64() calls. 2021-11-01 14:28:00 -04:00
Ryan C. Gordon 228219dcd4 include: Improved SDL_GetTicks*() documentation a little. 2021-11-01 14:28:00 -04:00
Ryan C. Gordon cca79d32a2 android: Patched SDL_GetTicks64() to compile. 2021-11-01 14:28:00 -04:00
Ryan C. Gordon affb183ea4 unix: Fixed SDL_GetTicks64 function signature. 2021-11-01 14:28:00 -04:00
Ryan C. Gordon 99c9727dc0 timer: Added SDL_GetTicks64(), for a timer that doesn't wrap every ~49 days.
Note that this removes the timeGetTime() fallback on Windows; it is a
32-bit counter and SDL2 should never choose to use it, as it only is needed
if QueryPerformanceCounter() isn't available, and QPC is _always_ available
on Windows XP and later.

OS/2 has a similar situation, but since it isn't clear to me that similar
promises can be made about DosTmrQueryTime() even in modern times, I decided
to leave the fallback in, with some heroic measures added to try to provide a
true 64-bit tick counter despite the 49-day wraparound. That approach can
migrate to Windows too, if we discover some truly broken install that doesn't
have QPC and still depends on timeGetTime().

Fixes #4870.
2021-11-01 14:28:00 -04:00
Ryan C. Gordon 8a4a282aaa alsa: Make hotplug thread optional.
Even without the thread, it'll do an initial hardware detection at startup,
but there won't be any further hotplug events after that. But for many cases,
that is likely complete sufficient.

In either case, this cleaned up the code to no longer need a semaphore at
startup.

Fixes #4862.
2021-10-30 16:02:12 -04:00
Ryan C. Gordon 179a04f85a fnsince.pl: Don't print out the version numbers if updating the wiki. 2021-10-26 21:01:05 -04:00
Ryan C. Gordon 85edbc92ac fnsince.pl: Added a way to sync this information to the wiki.
This will let us automate this so it's managed for us, and as things go
from development to official releases, the documentation will automatically
update!
2021-10-26 19:00:06 -04:00
Ryan C. Gordon f5de45aecc fnsince.pl: Found a few more incorrect versions. 2021-10-26 18:59:21 -04:00
Ryan C. Gordon e8fbcf893a fnsince.pl: a script to list version when all public APIs were added. 2021-10-26 12:13:41 -04:00
Ryan C. Gordon 08797adaef opengles2: Attempt to batch RenderCopy calls into a single glDrawArrays call. 2021-10-24 22:27:56 -04:00
Ryan C. Gordon d9d8f51eec wikiheaders.pl: Add support for deprecated functions. 2021-10-23 14:41:23 -04:00
Ryan C. Gordon dbe55350ce include: Improve doxygen text on SDL_GetRevisionNumber(). 2021-10-23 14:41:22 -04:00
Ryan C. Gordon 1b49f09243 include: manually ran wikiheaders.pl and cleaned up the obvious issues. 2021-10-08 20:50:30 -04:00
Ryan C. Gordon 55f60847cb wikiheaders.pl: Try to handle functions with multiple declarations better. 2021-10-08 20:50:30 -04:00