Commit Graph

16596 Commits

Author SHA1 Message Date
Sam Lantinga 490f7af92b Removed test that triggers an asan overflow warning
Fixes https://github.com/libsdl-org/SDL/issues/8884
2024-08-03 18:20:26 -07:00
Frank Praznik ca2c9f680b video: Support multiple video driver entries having the same name string
Allow multiple bootstrap entries for a single video driver with the same name, which internally allows preferential and fallback init conditions while hiding the implementation details from applications (e.g. applications will just see "wayland", regardless of whether it's using the preferred or fallback driver list entry).

If a driver is requested, all instances of it in the list will be tried before reporting failure, and client applications programmatically enumerating the video drivers will be presented with a deduplicated list of entries.
2024-08-03 06:55:24 -07:00
Joshua Ashton ab916a959e video: Only prefer Wayland if fifo-v1 and commit-timing-v1 are available
Wayland has a myriad of unresolved problems regarding surface suspension
blocking forever in QueuePresent/SwapBuffers when occludedand the FIFO
(vsync) implementation being fundamentally broken leading to reduced
GPU-bound performance and 'barcoding' frametimes due to swapchain
starvation.

There are two protocols used to solve these two problems together --
fifo-v1 and commit-timing-v1, which implement the commit queue on the
compositor side, and a timestamp that frames are intended to be
displayed for/discarded respectfully.

To avoid severe performance regressions for developers targeting SDL3,
only pick Wayland as the default backend when these two protocols are
supported -- otherwise fallback to X11/XWayland.

We do this by having two VideoBootStraps, one which is tests the
preferred case, "wayland_preferred" (ie. if fifo-v1 + commit-timing-v1
are available init time), and the fallback, which is just "wayland",
the same name as before, which does no such tests.
Thus, forcing with SDL_VIDEO_DRIVER=wayland will go onto the fallback
option, and pick Wayland always, as usual, so there is no behaviour
change.

In the case that X11/XWayland is not available (ie. no DISPLAY), we will
still fallback to using Wayland without these protocols available.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2024-08-03 06:55:24 -07:00
SDL Wiki Bot cb440ec4a4 Sync SDL3 wiki -> header 2024-08-03 13:40:37 +00:00
Sam Lantinga cd5f0d2cce Added SDL_RectToFRect() 2024-08-03 06:40:06 -07:00
Susko3 e3cf20e1cc
Remove `createSDLMainRunnable()` in favour of `main()` to fix multiple issues when providing custom main/runnable code (#10434)
This allows managed applications (eg. Java, C#) to override main() to their liking.
2024-08-03 06:34:38 -07:00
SDL Wiki Bot 2f24e9c2f2 Sync SDL3 wiki -> header 2024-08-03 13:30:08 +00:00
Sam Lantinga 2c0fcf27e8 Don't use alloca() in a loop, we might overflow the stack. 2024-08-02 21:38:29 -07:00
Sam Lantinga 978e5fc4f8 Updated Xcode project for SDL_GetWindowFromEvent() 2024-08-02 20:38:50 -07:00
Sam Lantinga f7c8d66ccb Use the convenience function SDL_GetWindowFromEvent() 2024-08-02 20:36:35 -07:00
Sam Lantinga 8d748d64e8 Fixed compiler warning building for macOS 2024-08-02 20:27:33 -07:00
SDL Wiki Bot b5c0921196 Sync SDL3 wiki -> header 2024-08-03 02:37:43 +00:00
Anonymous Maarten f57c597c60 Added SDL_GetWindowFromEvent 2024-08-03 02:37:11 +00:00
Sam Lantinga 79f4de9f7e Use SDL_PROP_APP_METADATA_IDENTIFIER_STRING for the app ID 2024-08-02 19:36:31 -07:00
Sam Lantinga cea71fbfcc SDL_cocoakeyboard: Fix errant semicolons in sendPendingKey and clearPendingKey definitions
- These are ignored by Clang but produce a warning: "semicolon before method body is ignored"
2024-08-02 18:55:30 -07:00
Sam Lantinga 2c1d40a9eb Added an error message when SDL_GetWindowFromID() fails 2024-08-02 18:43:24 -07:00
SDL Wiki Bot e058aa6d65 Sync SDL3 wiki -> header 2024-08-02 21:50:11 +00:00
Sam Lantinga 50492e1d03 Change the text input defaults to match the natural input experience 2024-08-02 14:49:37 -07:00
Sam Lantinga 81f8e6aba6 Added SDL_StartTextInputWithProperties()
This allows you to customize the text input so you can have numeric text entry, hidden passwords, etc.

Fixes https://github.com/libsdl-org/SDL/issues/7101
Fixes https://github.com/libsdl-org/SDL/issues/7965
Fixes https://github.com/libsdl-org/SDL/issues/9439
2024-08-02 14:49:37 -07:00
Sam Lantinga 5d51e3b4ab testime: added support for multiple windows 2024-08-02 14:49:37 -07:00
Sam Lantinga bffd35995c Added unifont-15.1.05.hex to the Xcode project for testime 2024-08-02 14:49:37 -07:00
SDL Wiki Bot f01d4278c6 Sync SDL3 wiki -> header 2024-08-01 20:49:00 +00:00
Sam Lantinga 31ed3665ad Added support for high-DPI cursors and icons
Fixes https://github.com/libsdl-org/SDL/issues/9838
2024-08-01 13:48:28 -07:00
Sam Lantinga 94d9229ce2 Added SDL_AddSurfaceAlternateImage(), SDL_SurfaceHasAlternateImages(), SDL_GetSurfaceImages() and SDL_RemoveSurfaceAlternateImages()
These functions allow you to create surfaces with alternate high DPI content, and will be used for high DPI icon and cursor support.
2024-08-01 13:48:28 -07:00
Sam Lantinga b8dc97c577 Use SDL_PremultiplySurfaceAlpha() when creating NSImages 2024-08-01 13:48:28 -07:00
Sam Lantinga b8f3cd0a10 Added SDL_CursorData for internal cursor data 2024-08-01 13:48:28 -07:00
Sam Lantinga 22ffb487d0 Added SDL_ScaleSurface() 2024-08-01 13:48:28 -07:00
Sam Lantinga 15f68a86ff Group the blit copy flags to simplify code 2024-08-01 13:48:28 -07:00
Ozkan Sezer 7d27a97402 d3d12.h, d3d12sdklayers.h: fix build against older mingw-w64 versions.
Fixes: https://github.com/libsdl-org/SDL/issues/10452 .
2024-08-01 21:45:02 +03:00
Anonymous Maarten 68fb07787b cmake: Remove HAVE_D3D12_H from sources and introduce SDL_RENDER_D3D(11|12) 2024-08-01 17:49:02 +00:00
Anonymous Maarten 0c5bb532c3 Remove support for building a SDL3 library from gradle 2024-08-01 17:48:49 +00:00
Anonymous Maarten 349540f73f Document the new SDL3 Android archive artifact 2024-08-01 17:48:49 +00:00
Dragon-Baroque 808c312b2a Support SDL_EVENT_DROP_FILE in Windows with IDropTarget instead of WM_DROPFILES
Support SDL_EVENT_DROP_TEXT in Windows

  src/video/windows/SDL_windowsvideo.c + .h
    Connect      to COM WIN_CoInitialize   + OLE OleInitialize   in WIN_VideoInit
    Disconnect from COM WIN_CoUninitialize + OLE OleUninitialize in WIN_VideoQuit
  src/video/windows/SDL_windowswindow.c + .h
    Create / Destroy IDropTarget or use fallback WM_DROPFILES
      depending on OleInitialize success in WIN_VideoInit
    Handle text/uri-list, text/plain;charset=utf-8, CF_UNICODE_TEXT, CF_TEXT, CF_HDROP
    Call terminating WIN_AcceptDragAndDrop from WIN_DestroyWindow ( CleanupVideoData )
2024-08-01 07:17:17 -07:00
Ethan Lee efefc4a1f3 d3d12: Move platform-specific includes/defines to SDL_d3d12.h 2024-07-31 23:34:31 -07:00
SDL Wiki Bot 2e058ba7a4 Sync SDL3 wiki -> header 2024-08-01 05:37:11 +00:00
Sam Lantinga a5f18048b2 Extend the 9-grid functions to handle a non-uniform grid layout (thanks @zaun!)
Fixes https://github.com/libsdl-org/SDL/issues/10389
2024-07-31 22:36:39 -07:00
Anonymous Maarten a1c6f99877 android: add script in Android archive to create a SDK
Also,
- Move mingw's pkg-support into build-scripts
- Add type annotations to python scripts for mypy
- ci: use v4 tag of actions/cache
- cmake: use PYTHON3_EXECUTABLE for running xxd.py
  (Python3::Interpreter is not always recognized.)
2024-08-01 05:07:08 +02:00
Sam Lantinga 091960441b Don't check SDL_RENDER_DRIVER in automated tests
This might be set in the environment for testing purposes
2024-07-31 19:10:13 -07:00
Sam Lantinga 445983fc79 Remove D3D12 call hacks now that we have a good set of D3D12 headers 2024-07-31 19:10:13 -07:00
Sam Lantinga de30400a7b Fixed uninitialized variable warning 2024-07-31 18:54:45 -07:00
Sam Lantinga 1954ac407f Don't mix keyboard and mouse raw input timestamps
We want to keep mouse timestamps consistently using the same interval, and it's helpful to know when multiple keyboard events come in at the same time.
2024-07-31 18:54:45 -07:00
Ethan Lee 55e9a8ca45 d3d12: Import DirectX-Headers, use local d3d12.h in SDL_render.
This avoids lots of build issues with the various D3D12 headers out there (MinGW, old Windows SDKs, etc) and also opens the door for WSL2 libd3d12.so support.

Note that the build system has not been changed; technically _all_ platforms now have d3d12.h but we should only enable the backend when it's actually expected to work.
2024-07-31 18:41:17 -07:00
Sam Lantinga c5a99f1515 Fixed detecting wrapping Windows message time
It's possible to get message times out of order when processing the Windows message queue, so this passes those times through unchanged, while still detecting when the message tick wraps.
2024-07-31 16:36:47 -07:00
Ryan C. Gordon 364bbd545d audio: SDL_ClosestAudioFormats now favors float32 and native byte order.
Fixes #9581.
2024-07-31 07:19:15 -07:00
Sami Kyöstilä 80f5f0b1fb android: Fix activity pause/resume with external graphics context
This patch fixes two issues with pausing and resuming the Android
activity when an external graphics context[1] is used:

1. When pausing, don't wait for the EGL context to be backed up if a
   context wasn't created in the first place.

2. When resuming, don't recreate the EGL surface unless one was
   requested by the user when originally creating the window.

[1] SDL_PROP_WINDOW_CREATE_EXTERNAL_GRAPHICS_CONTEXT_BOOLEAN
2024-07-30 20:15:42 -07:00
Sam Lantinga 89de8e2110 Fixed infinite loop searching for matching video modes (thanks @Synt4xErr0r4!) 2024-07-30 17:29:21 -07:00
Anonymous Maarten b68ac011e0 ctest: fail if there are outstanding allocations 2024-07-30 20:56:19 +00:00
Anonymous Maarten c7a1876536 SDL_test: use mutex based on SDL_AtomicInt in memory tracking
SDL_Mutex or SDL_SpinLock cannot be used as these use SDL_malloc internally.

ff
2024-07-30 20:56:19 +00:00
Anonymous Maarten 4c00433b69 SDL_test: format tracked allocation names during report generation 2024-07-30 20:56:19 +00:00
Anonymous Maarten bc8f4a1d0b ci: fix artifacts on libsdl-org repo 2024-07-30 22:55:36 +02:00