Commit Graph

3189 Commits

Author SHA1 Message Date
Sam Lantinga
a9b87ee201 Fixed warning C28159: Consider using 'GetTickCount64' instead of 'GetTickCount'. Reason: GetTickCount overflows roughly every 49 days. Code that does not take that into account can loop indefinitely. GetTickCount64 operates on 64 bit values and does not have that problem 2023-12-05 09:31:13 -08:00
Sam Lantinga
0c4cb3d153 Fixed warning C26451: Arithmetic overflow: Using operator '<<' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator '<<' to avoid overflow (io.2). 2023-12-05 09:31:13 -08:00
Sam Lantinga
06f8f9a891 Fixed warning C6326: Potential comparison of a constant with another constant.
Also fixed warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>.  Did you intend to use the bitwise-and operator?
2023-12-05 09:31:13 -08:00
Ryan C. Gordon
f184dea16c uikit: Patched to compile. 2023-11-30 00:27:17 -05:00
Ryan C. Gordon
447b508a77 error: SDL's allocators now call SDL_OutOfMemory on error.
This means the allocator's caller doesn't need to use SDL_OutOfMemory directly
if the allocation fails.

This applies to the usual allocators: SDL_malloc, SDL_calloc, SDL_realloc
(all of these regardless of if the app supplied a custom allocator or we're
using system malloc() or an internal copy of dlmalloc under the hood),
SDL_aligned_alloc, SDL_small_alloc, SDL_strdup, SDL_asprintf, SDL_wcsdup...
probably others. If it returns something you can pass to SDL_free, it should
work.

The caller might still need to use SDL_OutOfMemory if something that wasn't
SDL allocated the memory: operator new in C++ code, Objective-C's alloc
message, win32 GlobalAlloc, etc.

Fixes #8642.
2023-11-30 00:14:27 -05:00
Ryan C. Gordon
70b65d4170 cocoa: Resync modifier keypressed on NSEventTypeFlagsChanged event.
Fixes #7507.
2023-11-29 21:38:41 -05:00
Ryan C. Gordon
daa38dc793 touch: Replace GetNumTouchDevices/GetTouchDevice with a single function.
Now it returns an array and optional count, to match other SDL3 APIs.

SDL_GetTouchName() was replaced with a function that takes an instance ID
instead of an index, too.
2023-11-29 20:50:44 -05:00
Dimitriy Ryazantcev
9faa7977bd UWP: Add support for supplementary Unicode characters input
Characters outside Basic Multilingual Plane (BMP) are coded as so called "surrogate pair" in two separate UTF-16 character events.
2023-11-28 12:33:21 -08:00
Dimitriy Ryazantcev
7b628ea4d5 Win32: Simplify Unicode text input code 2023-11-28 12:33:21 -08:00
Dimitriy Ryazantcev
9a206adbee UWP: Use Windows.UI.Core.CoreDispatcher.AcceleratorKeyActivated event for keyboard
Only in this case we can see Left Alt and Right Alt keys.

Stole the idea from DirectXTK12 repo:
https://github.com/microsoft/DirectXTK12/blob/main/Src/Keyboard.cpp
2023-11-28 11:31:19 -08:00
Dimitriy Ryazantcev
309ea2d5f9 UWP: Simplify Win32 scan code to SDL scan code mapping 2023-11-28 11:31:19 -08:00
Dimitriy Ryazantcev
acc5bb89f8 [Win32] Better keyboard button mapping to SDL scan codes
Using official mappings from the Microsoft docs:
https://learn.microsoft.com/windows/win32/inputdev/about-keyboard-input#scan-codes
2023-11-28 11:31:19 -08:00
Dimitriy Ryazantcev
7e86b6aef2 Win32: Fix keymap for keyboard layouts that can print UTF-16 surrogates and ligatures
Old implementation with `MapVirtualKey(..., MAPVK_VK_TO_CHAR) & 0x7FFFF` simply returned `A`..`Z` for VK_A..VK_Z and
completely useless <U+0002 START OF TEXT> (`WCH_LGTR 0xF002` without high-order bit) in case of ligature.

See https://kbdlayout.info/features/ligatures for a list of affected keyboard layouts.
More info on `MAPVK_VK_TO_CHAR`: https://stackoverflow.com/a/72464584/1795050
2023-11-28 11:11:33 -08:00
Ryan C. Gordon
3817f5126e cocoa: Use -[NSApplicationDelegate applicationSupportsSecureRestorableState].
This prevents warnings at startup on macOS Sonoma (14.0).

(cherry picked from commit 7d25a443c4)
2023-11-28 12:41:35 -05:00
Jake S. Del Mastro
ceac93ade2 Set framebuffer_srgb_capable to the actual value obtained (#8634)
(cherry picked from commit 594a79c2f9)
2023-11-28 05:49:40 -08:00
Sylvain
6bb40f1d8d SDL_VideoCapture: allow add/remove device at runtime on linux 2023-11-27 16:01:10 -05:00
Christoph Reichenbach
1b284cd415 X11 pen detection: fix misclassification due to improper init
xinput2_device_is_pen() was testing against default-zero values
in the X11 Atom cache on at least the first round of
detections, leading to imprecise detection.

The patch fixes two aspects of initialisation:

1. Ensure that the selector cache is always initialised in
xinput2_device_is_pen().

2. Ensure that all X11 Atoms used in SDL_x11pen.c are instantiated if
missing. This ensures that they are never None and avoids potential
failures to detect hot-plugged tablet devices.

Acknowledgements: @tilman3 for narrowing down the issue and an
initial fix
2023-11-26 14:10:04 +03:00
Ryan C. Gordon
db7f6425d0 rect: Avoid numeric overflow on massive lines in SDL_IntersectRectAndLine.
Reference Issue #8301.
Reference Issue #8113.

(cherry picked from commit a391dd5fef)
2023-11-24 19:34:20 -05:00
Ryan C. Gordon
74a2542564 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.
2023-11-23 13:56:51 -05:00
Ozkan Sezer
5730eb67f0 add HAVE_GCC_DIAGNOSTIC_PRAGMA to SDL_internal.h, use it 2023-11-23 11:33:20 +03:00
Ozkan Sezer
53544cabaa psp: fix copy/paste error from SDL2 in PSP_VideoQuit(). 2023-11-23 04:11:24 +03:00
Ryan C. Gordon
6cde96f9a0 psp: Hook up event subsystem init/quit.
Fixes #8554.

(cherry picked from commit 0e9d050296)
2023-11-22 18:03:29 -05:00
Ryan C. Gordon
e9659f5738 Removed some function declarations that don't actually exist.
Reference Issue #8554.

(cherry picked from commit 87875a49b4)
2023-11-22 17:58:54 -05:00
Sam Lantinga
81fc7ded78 Removed the window shape API for SDL 3.0
Fixes https://github.com/libsdl-org/SDL/issues/6654
Fixes https://github.com/libsdl-org/SDL/issues/6897
2023-11-22 14:11:10 -08:00
Ozkan Sezer
86d77bbcc5 kmsdrm: restrict KMSDRM_ReleaseVT/KMSDRM_AcquireVT to SDL_INPUT_LINUXEV 2023-11-22 06:21:28 +03:00
Dimitriy Ryazantcev
0d431015bf Extract BMP magic into separate define 2023-11-21 08:37:33 -08:00
Zack Middleton
fd91178d7f Make size cursors be double arrows on Wayland
I added fallbacks as they are listed under "to be discussed" in the spec
but I don't know if they're necessary.

https://www.freedesktop.org/wiki/Specifications/cursor-spec/
2023-11-21 08:34:30 -08:00
Zack Middleton
5e9b0820f3 Add cursors for X11/Wayland window resizing 2023-11-21 08:34:13 -08:00
Dimitriy Ryazantcev
91e122316c Use SDL_small_alloc() instead of SDL_stack_alloc() in CreateMaskBitmap() 2023-11-21 07:42:01 -08:00
Ionuț Leonte
b76f8de298 Hit testing tweaks for X11 and Wayland (#8582)
Hit testing on X11 and Wayland should now behave more like it
does on Windows - the current active zone is tracked on mouse
motion events and the cursor is changed accordingly when hovering
a "special" zone (such as the resize handles).
2023-11-20 13:33:11 -08:00
Dimitriy Ryazantcev
49d58bc73a Cleanup WIN_CreateCursor() code a bit
Generate bimap mask from the alpha channel.
2023-11-19 12:41:12 -08:00
Cameron Cawley
05e7dcf8f8 Support returning <8bpp surfaces in SDL_LoadBMP_RW 2023-11-17 08:45:32 -08:00
Cameron Cawley
773ec1cfcb Extend blitting support for all <8bpp formats 2023-11-17 08:45:32 -08:00
Cameron Cawley
753bbd199e Add SDL_PIXELFORMAT_INDEX2LSB and SDL_PIXELFORMAT_INDEX2MSB 2023-11-17 08:45:32 -08:00
Sam Lantinga
aaf54b09a1 Revert "Cleanup WIN_CreateCursor() code a bit"
This reverts commit 876c97454a.

This caused the blank cursor to be entirely black
2023-11-15 11:32:06 -08:00
Frank Praznik
078995bbe0 x11: Set the skip taskbar and skip pager atoms on utility windows
Some compositors apparently still need these set to keep the window out of the taskbar and pager, even with the utility window atom being set.
2023-11-15 04:43:37 -05:00
Louis M
bd4966999b Replacing SDL_SCANCODE_AUDIOMUTE by SDL_SCANCODE_MUTE on Windows
(cherry picked from commit 925362a2fc)
2023-11-14 09:27:43 -08:00
Sam Lantinga
15504da0b8 Fixed mouse wheel scrolling direction on iOS 2023-11-14 09:10:56 -08:00
Sam Lantinga
e0c45c6c98 Renamed SDL_WINDOW_FOREIGN to SDL_WINDOW_EXTERNAL 2023-11-14 06:06:51 -08:00
Sam Lantinga
229b7b9d50 SDL_CreateWindowWithPosition() and SDL_CreateWindowFrom() have been replaced with SDL_CreateWindowWithProperties()
This is a more general interface that can be extended in the future as needed.
2023-11-14 06:06:51 -08:00
Dimitriy Ryazantcev
876c97454a Cleanup WIN_CreateCursor() code a bit
Closes #6476
2023-11-13 11:46:50 -08:00
Sam Lantinga
1c4723ac66 SDL_CreateWindowFrom() now takes a set of properties that describe the native window and options. 2023-11-12 21:58:58 -08:00
Sam Lantinga
0907f345cb Added property types: pointer, string, number, float 2023-11-12 10:48:38 -08:00
Christoph Reichenbach
7c80ac6df7 API for pressure-sensitive pens + XInput2/Wayland
This patch adds an API for querying pressure-
sensitive pens, cf. SDL_pen.h:
- Enumerate all pens
- Get pen capabilities, names, GUIDs
- Distinguishes pens and erasers
- Distinguish attached and detached pens
- Pressure and tilt support
- Rotation, distance, throttle wheel support
  (throttle wheel untested)
- Pen type and meta-information reporting
  (partially tested)

Pen event reporting:
- Three new event structures: PenTip, PenMotion, and
  PenButton
- Report location with sub-pixel precision
- Include axis and button status, is-eraser flag

Internal pen tracker, intended to be independent
of platform APIs, cf. SDL_pen_c.h:
- Track known pens
- Handle pen hotplugging

Automatic test:
- testautomation_pen.c

Other features:
- XInput2 implementation, incl. hotplugging
- Wayland implementation, incl. hotplugging
- Backward compatibility: pen events default to
  emulating pens with mouse ID SDL_PEN_MOUSEID
- Can be toggled via SDL_HINT_PEN_NOT_MOUSE
- Test/demo program (testpen)
- Wacom pen feature identification by pen ID

Acknowledgements:
- Ping Cheng (Wacom) provided extensive feedback
  on Wacom pen features and detection so that
  hopefully untested Wacom devices have a
  realistic chance of working out of the box.
2023-11-12 09:52:02 -08:00
Sylvain Becker
04b6b2979f Re-add SDL_assert() with non boolean ptr syntax (#8530) 2023-11-11 12:28:24 +03:00
meyraud705
8708ba7393 Don't leak if realloc fails 2023-11-10 06:33:39 -08:00
Frank Praznik
74f3643bfa wayland: Add missing break to switch statement 2023-11-09 19:48:56 -05:00
Anonymous Maarten
2d6bae70b4 Older gcc does not support #pragma GCC diagnostic inside functions 2023-11-09 23:33:28 +01:00
Sylvain
d8600f717e Pointer as bool (libsdl-org#7214) 2023-11-09 14:18:36 -08:00
Anonymous Maarten
23db971681 x11: Ignore deprecated declaration of XKeycodeToKeysym 2023-11-09 18:45:54 +01:00