Commit Graph
100 Commits
Author SHA1 Message Date
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
Ryan C. Gordon 3970a885a5 wikiheaders.pl: Migrate in docs that exist only in the wiki.
This is going to expose some docs that needs cleaning up once
the bridge imports those docs, though.
2021-10-08 15:58:02 -04:00
Ryan C. Gordon 194657a2c6 include: Fix indentation on SDL_SoftStretch doxygen comment.
Otherwise wikiheaders.pl doesn't think it's valid.
2021-10-08 15:58:01 -04:00
Ryan C. Gordon ab7910facf cmake: Move the old, global add_definitions (etc) to an interface library.
Fixes #4150.
2021-10-05 12:34:29 -04:00
Ryan C. Gordon f1793af404 cmake: removed an add_definitions call. 2021-10-05 11:19:30 -04:00
Ryan C. Gordon 25fdba39bb cmake: fix indentation. 2021-10-05 11:19:14 -04:00
Ryan C. Gordon f306662544 cmake: Correctly set IOS variable.
Fixes #4635.
2021-10-05 11:13:41 -04:00
Ryan C. Gordon 60d59aeb61 cmake: Calculate padding for dislaying options automatically. 2021-10-05 10:54:06 -04:00
Ryan C. Gordon 7850d0cf6f cmake: Prefix all options with "SDL_"
This makes it clear which options came from SDL's CMake project when
building SDL as a subdirectory of a parent CMake project.

Fixes #4139.
2021-10-05 10:45:26 -04:00
Ryan C. Gordon 7def81cf42 wikiheaders.pl: Don't treat chars in code blocks as markdown.
Otherwise a formula like `x = y * 2;` would treat that '*' as the start of
an italicized section when converting to MediaWiki format, and match any
other '*' in the content as the end marker.
2021-09-30 17:34:25 -04:00
Ryan C. Gordon 2f93fbbb75 include: Fix markdown in a doxygen comment. 2021-09-30 10:04:09 -04:00
Ryan C. Gordon ab09f3dae5 cmake: Remove warning about CFLAGS environment variable.
CMake 3.11.0 respects this environment var.

Fixes #4681.
2021-09-30 10:02:54 -04:00
Ryan C. Gordon cd6f96dede cmake: bump minimum CMake allowed to 3.11.0.
This cmake is 3 years old, but it removes confusion about the CFLAGS
environment variable (as of CMake 3.10.0, reference PR #4681) and also
consolidates resolves the need to have a separate requirement for Windows
Store apps (which requires CMake 3.11.0).
2021-09-30 10:02:53 -04:00
Ryan C. Gordon f79ac6a8de cmake: Don't use the CFLAGS environment variable.
CMake has standard means of setting compiler flags, such as the
-DCMAKE_C_FLAGS command line for general-purpose flags, and
-DCMAKE_BUILD_TYPE for letting it choose reasonable release/debug/etc
defaults. Trying to emulate the configure script is incorrect and confusing
here.

Fixes #1819.
2021-09-27 23:31:23 -04:00
Ryan C. Gordon 114d1d46ac direct3d: Remove unnecessary render target support check.
Direct3D 9 dictates that caps.NumSimultaneousRTs must always be at least 1,
which is to say that Direct3D 9 level hardware must always support render
targets.

(caps.NumSimultaneousRTs is meant to show if you can draw to multiple render
targets in a single draw call.)

We had already hardcoded SDL_RENDERER_TARGETTEXTURE as available earlier in
the function anyhow.

Fixes #4781.
2021-09-27 23:18:25 -04:00
Ryan C. Gordon 0aff42a159 egl: Group data fields before function pointers in SDL_EGL_VideoData. 2021-09-23 00:03:26 -04:00
Ryan C. Gordon 0ad4956c06 egl: explicitly call eglBindAPI during SDL_GL_MakeCurrent.
The EGL API binding must be specified per-thread, per the docs.

Fixes #1820.
2021-09-23 00:03:25 -04:00
Ryan C. Gordon 3147716022 egl: make an int into an SDL_bool. 2021-09-23 00:03:25 -04:00
Ryan C. Gordon ce11caa80f alsa: Map 7.1 audio channels to match what Windows and macOS expect.
This matches what we did a long time ago for 5.1 audio.

Fixes #55.

(FIFTY FIVE. Bug reported 15 years, 3 months, and 11 days ago! lol)
2021-09-21 16:49:44 -04:00
Ryan C. Gordon c45facf2ca alsa: clean up macro salsa a little. 2021-09-21 11:13:46 -04:00
Ryan C. Gordon f5e636a621 config: Try to use stdint.h with Borland C.
(This probably isn't right on truly ancient versions of Borland C, but it
should cover things from the last decade or so, I hope.)

(possibly) Fixes #1673.
2021-09-20 20:45:58 -04:00
Ryan C. Gordon 478f9eed28 x11: Don't include X11/extensions/extutil.h
We don't use it, it was a leftover from 1.2, I think, and it doesn't exist
on Solaris, so this should hopefully fix the build there.

This also means we don't need the configure/cmake checks for
SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY, so that was removed also.

Fixes #1666.
2021-09-20 10:22:50 -04:00
Ryan C. Gordon ca9a321715 render: GL/GLES now draw lines almost perfectly matching software renderer.
One place known to differ in a significant way is a single line segment that
starts and ends on the same point; the GL renderers will light up a single
pixel here, whereas the software renderer will not. My current belief is this
is a bug in the software renderer, based on the wording of the docs:

"SDL_RenderDrawLine() draws the line to include both end points."

You can see an example program that triggers that difference in Bug #2006.

As it stands, the GL renderers might _also_ render diagonal lines differently,
as the the Bresenham step might vary between implementations (one does three
pixels and then two, the other does two and then three, etc). But this patch
causes those lines to start and end on the correct pixel, and that's the best
we can do, and all anyone really needs here.

Not closing any bugs with this patch (yet!), but here are several that it
appears to fix. If no other corner cases pop up, we'll call this done.

Reference Bug #2006.
Reference Bug #1626.
Reference Bug #4001.
...and probably others...
2021-09-19 15:47:24 -04:00
Ryan C. Gordon 857cc7c0c9 render: constified some local variables in SDL_AllocateRenderVertices. 2021-09-19 00:38:06 -04:00
Ryan C. Gordon 5faea84c63 render: Mark viewport/cliprect dirty when window is resized.
Fixes #4751.
2021-09-18 11:54:25 -04:00
Ryan C. Gordon b8da02e6ef include: Fix triggering of Clang's -Wexpansion-to-defined in SDL_endian.h
It doesn't like #if statements that uses a macro that uses defined(x).
2021-09-18 10:44:32 -04:00
Ryan C. Gordon 8f41412327 cmake: Patched to compile.
Too fast on the git push!!
2021-09-18 10:35:36 -04:00
Ryan C. Gordon bf1d7a3a15 cmake: Don't trust the HAVE_IMMINTRIN_H check on Apple targets.
Otherwise universal builds might try to include an Intel-specific header
on ARM builds, etc.

Fixes #4753.
2021-09-18 10:33:51 -04:00
Ryan C. Gordon d49d955d73 render: SDL_RenderGeometry should still render when hidden, in most cases.
(otherwise render targets may fail, etc...the check is a legacy helper for
iOS apps that crash if you try to use OpenGL while in the background.)
2021-09-08 11:44:17 -04:00
Ryan C. Gordon 8796f35e0f wikiheaders.pl: Make sure all wiki API pages reference CategoryAPI. 2021-09-01 00:19:54 -04:00
Ryan C. Gordon e260c80472 Fix the wiki/headers bridge.
I'm tweaking this manually to remove some whitespace that confused it, but
if this happens again I'll make improvements to wikiheaders.pl instead.
2021-08-30 23:50:47 -04:00
Ryan C. Gordon a47f59bbe5 codechecker-buildbot.sh: Don't fail if a static analysis issue is reported. 2021-08-27 01:03:14 -04:00
Ryan C. Gordon a6b45fa7cf codechecker-buildbot.sh: mark script as executable. 2021-08-27 00:56:18 -04:00
Ryan C. Gordon f7ee06f3a5 build-scripts: Add a buildbot script for CodeChecker static analysis. 2021-08-27 00:51:00 -04:00
Ryan C. Gordon d5fe9c308a x11: Log a warning if we decide to use XVidMode.
Reference issue #1782.
2021-08-24 14:29:39 -04:00
Ryan C. Gordon 79c7a1713f testvulkan: reformatted to more-closely match SDL coding conventions. 2021-08-24 12:41:41 -04:00
Ryan C. Gordon 374b0b9aaf cmake: Don't support Vulkan if LOADSO is disabled.
Fixes #4373.
2021-08-24 00:01:46 -04:00
Ryan C. Gordon fff421f4b8 cmake: fix a bunch of things to properly link without LOADSO enabled.
The wrong logic, copy/pasted to a bunch of places, would correctly disable
the dynamic loading but fail to specify the libraries that SDL would now need
to explicitly link against.
2021-08-24 00:01:46 -04:00
Ryan C. Gordon abba181118 testvulkan: support multiple windows.
Fixes #4363.
2021-08-23 20:20:49 -04:00
Ryan C. Gordon 13ec545936 configure: Disable Vulkan support if loadso subsystem is disabled.
Fixes #4373.
2021-08-23 00:54:39 -04:00
Ryan C. Gordon 9504bb121d pulseaudio: Fix some function signatures that expect const pointers.
This might have changed at some point in the Pulse API, or this might have
always been wrong, but we didn't notice because the dynamic loading code
hides it by casting things to void *. The static path, where it
assigns the function pointer directly, puts out a clear compiler warning,
though.
2021-08-23 00:47:25 -04:00
Ryan C. Gordon dd683073bb hidapi: Patched to compile on QNX.
Fixes #4591.
2021-08-06 15:13:40 -04:00
Ryan C. Gordon ac20167ef7 configure: Fixes to make SDL link as C++ on Haiku.
Fixes #4590.
2021-08-06 14:08:50 -04:00
Ryan C. Gordon b83a019d68 cmake: Force linker to treat input as a C++ program on Haiku.
Reference issue #4590.
2021-08-04 19:22:40 -04:00
Ryan C. Gordon d483970262 dbus: Wrap init in a spinlock.
This prevents a race if two threads that need d-bus try to init it at the
same time. Note that SDL_Init will likely handle this from a single thread
at startup, but there are places outside of init where one might trigger
D-Bus init, like setting thread priority (a common first thing for a new
thread to do) resulting in SDL trying to use RTKit.

Fixes #4587.
2021-08-04 13:30:12 -04:00
Ryan C. Gordon 5fc13fcb21 direct3d: Commit viewport state before clearing, attempt 2.
This reintroduces the fix from 0e16ee8330, but just marks
the viewport state as dirty after a clear that needs to expand the
viewport to fill the render target, as we'll need to also reset
the orthographic projection state elsewhere, and that won't
happen if we clear the dirty flag here.

Fixes #4210.
(again.)
(...sorry...!)
2021-08-04 07:00:17 -04:00
Ryan C. Gordon ed6ce5ccb0 log: Fixed compiler warnings on 64-bit Visual Studio. 2021-08-04 02:34:09 -04:00
Ryan C. Gordon 7e88e772d7 winrt: Fixed incorrect code in a Windows Phone #ifdef. 2021-08-04 02:30:47 -04:00
Ryan C. Gordon 8104c9e3eb doxygen: manually move SDL_CloseAudioDevice docs from wiki.
Apparently we don't fill these in from the wiki if the function doesn't
have _any_ documentation already. That's a bug, I think.
2021-08-04 00:02:39 -04:00
Ryan C. Gordon 57bfed79e2 README-dynapi.md: Google+ link is gone, remove it.
The Wayback Machine doesn't even have it.  :(
2021-08-03 22:15:04 -04:00
Ryan C. Gordon 178c95f82c README-winrt.md: Cleaned up sample code
- Fixed the markdown.
- Code can now be exited by pressing ESC.
- Cleans up and returns from main()
- Mushed all the `if (x) { return 0; }` blocks into else ifs.
2021-08-03 21:52:47 -04:00
Ryan C. Gordon 74aa4b635c cmake: don't fail if Wayland is enabled but libdecor isn't found.
Instead, just disable libdecor support.

This matches what the configure script does.
2021-08-03 03:10:14 -04:00
Ryan C. Gordon c308453952 cmake: Use CMAKE_INSTALL_FULL_* for libdir,bindir,etc.
This makes sure sdl2.pc gets the full paths, matching what the
configure script will generate.

Fixes #4569.
2021-08-03 02:49:08 -04:00
Ryan C. Gordon 0e16ee8330 direct3d: Commit dirty viewport state before clearing.
Otherwise you might have set the viewport to the full size of
the render target in SDL's API but this change hasn't been
transmitted to Direct3D yet by the time we attempt to clear.

Fixes #4210.
2021-08-03 02:32:56 -04:00
Ryan C. Gordon 350ca0f908 winrt: Don't register orientation hint callback in startup code.
SDL_AddHintCallback() uses SDL_malloc(), which means this would
run before main(), so the app wouldn't be able to supply its own
replacement SDL_malloc() implementation in time.

This code was moved to under SDL_Init. Since the hint callback
already makes efforts to not override the app manifest's
orientation settings, this is safe to move until after pre-main()
startup.

Fixes #4449.
2021-08-03 05:07:39 -04:00
Ryan C. Gordon 834a84fabb winrt: Don't use LoadLibraryA on WinRT.
This removes the CM_Register_Notification code on WinRT. Note
that this API _is_ available to UWP apps as of Windows 10.0.17763
(version 1809, released October 2018), according to:

https://docs.microsoft.com/en-us/uwp/win32-and-com/win32-apis#apis-from-api-ms-win-devices-config-l1-1-1dll

So it might be worth readding with some sort of preprocessor check
for minimum targeted version, or whatever is appropriate for WinRT
development.
2021-08-03 05:07:39 -04:00
Ryan C. Gordon 4c7825f6bd x11: XSync while trying to catch XRRSetScreenSize error.
Reference issue #4561
2021-07-31 18:27:14 -04:00
Ryan C. Gordon d0effadf68 x11: Don't let XRRSetScreenSize fire a BadMatch error.
This is a workaround and not a proper fix, but this is possibly complicated,
and possibly a corner case, so this will do for 2.0.16, if not the
foreseeable future.

Reference issue #4561
2021-07-31 15:58:31 -04:00