Skip to content

Commit 761d842

Browse files
a-hurstmultiSnow
andauthored
Update bindings for release SDL 2.26.0 (#253)
* Update event structures for 2.26.0 * add new API in SDL 2.26.0 * add new hints in SDL 2.26.0 * add myself to AUTHORS.txt * Update __all__ to be in same order as SDL_hints.h * Rearrange hints by group/alphabetical order * Update sensor constants and version * Reorder bindings to match headers * Add basic tests for new functions * Update CI for 2.26.0 * Update news.rst * Patch out SDL_GetJoystickGUIDInfo on older Python * Fix xfail conditional Co-authored-by: multiSnow <[email protected]>
1 parent a95e5ca commit 761d842

File tree

19 files changed

+210
-35
lines changed

19 files changed

+210
-35
lines changed

.ci/getsdl2.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@
3434
}
3535

3636
libversions = {
37+
'2.26.0': {
38+
'SDL2': '2.26.0',
39+
'SDL2_mixer': '2.6.0',
40+
'SDL2_ttf': '2.20.0',
41+
'SDL2_image': '2.6.0',
42+
'SDL2_gfx': '1.0.4'
43+
},
3744
'2.24.0': {
3845
'SDL2': '2.24.0',
3946
'SDL2_mixer': '2.6.0',

.github/workflows/run_tests.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ jobs:
2323
fail-fast: false
2424
matrix:
2525
python-version: ['2.7', '3.6', '3.7', '3.8', '3.9', '3.10']
26-
sdl2: ['2.24.0']
26+
sdl2: ['2.26.0']
2727
name-prefix: ['Linux (Python ']
2828
include:
2929
- python-version: 'pypy-2.7'
30-
sdl2: '2.24.0'
30+
sdl2: '2.26.0'
3131
name-prefix: 'Experimental / Linux ('
3232
- python-version: 'pypy-3.7'
33-
sdl2: '2.24.0'
33+
sdl2: '2.26.0'
3434
name-prefix: 'Experimental / Linux ('
3535

3636
env:
@@ -72,11 +72,11 @@ jobs:
7272
fail-fast: false
7373
matrix:
7474
python-version: [3.9]
75-
sdl2: ['2.24.0', '2.0.22', '2.0.20']
75+
sdl2: ['2.26.0', '2.24.0', '2.0.22']
7676
name-prefix: ['macOS (Python ']
7777
include:
7878
- python-version: '2.7'
79-
sdl2: '2.24.0'
79+
sdl2: '2.26.0'
8080
name-prefix: 'macOS (Python '
8181
- python-version: '3.9'
8282
sdl2: 'from Homebrew'
@@ -129,22 +129,22 @@ jobs:
129129
python-version: [3.9]
130130
architecture: ['x64']
131131
sdl2: [
132-
'2.24.0', '2.0.22', '2.0.20', '2.0.18', '2.0.16', '2.0.14', '2.0.12',
133-
'2.0.10', '2.0.9', '2.0.8', '2.0.7', '2.0.6', '2.0.5'
132+
'2.26.0', '2.24.0', '2.0.22', '2.0.20', '2.0.18', '2.0.16', '2.0.14',
133+
'2.0.12', '2.0.10', '2.0.9', '2.0.8', '2.0.7', '2.0.6', '2.0.5'
134134
]
135135
name-prefix: ['Windows (Python ']
136136
include:
137137
- python-version: '2.7'
138138
architecture: 'x64'
139-
sdl2: '2.24.0'
139+
sdl2: '2.26.0'
140140
name-prefix: 'Windows (Python '
141141
- python-version: '2.7'
142142
architecture: 'x86'
143-
sdl2: '2.24.0'
143+
sdl2: '2.26.0'
144144
name-prefix: 'Windows 32-bit (Python '
145145
- python-version: '3.9'
146146
architecture: 'x86'
147-
sdl2: '2.24.0'
147+
sdl2: '2.26.0'
148148
name-prefix: 'Windows 32-bit (Python '
149149
- python-version: '2.7'
150150
architecture: 'x86'

AUTHORS.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,4 @@ Thanks to everyone else for their assistance, support, fixes and improvements:
5353
* Todd Rovito
5454
* William Manire
5555
* Zack Marvel
56+
* WJ Liu

doc/modules/sdl2.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ available within :mod:`sdl2`.
116116
* Everything from ``SDL_opengl.h`` (see PyOpenGL for a compatible OpenGL API)
117117
* Everything from ``SDL_mutex.h``
118118

119+
Additionally, ``SDL_GetJoystickGUIDInfo`` only functions properly in Python 3.7
120+
and newer due to a ctypes bug. On older versions of Python, the function can be
121+
called but will have no effect.
122+
119123
Additional interfaces
120124
---------------------
121125
The following functions, classes, constants and macros are *not* part of

doc/news.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@ New Features:
2222
to allow easier unpacking in Python (e.g. ``x, y, w, h = rect``).
2323
* Cache :class:`sdl2.ext.Texture` sizes for faster retrieval, improving render
2424
performance in some cases.
25+
* Updated to wrap new functions and constants in SDL2 2.26.0 (PR #252 & #253).
2526

2627
Fixed Bugs:
2728

2829
* Fixed bug preventing SDL Points and Rects from being used as ``srcrect`` or
2930
``dstrect`` for :meth:`~sdl2.ext.Renderer.copy`.
31+
* Added a binding for ``SDL_ResetHint``, which was added in SDL 2.24.0 but
32+
got missed in PR #246.
3033

3134

3235
0.9.14

sdl2/clipboard.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
SDLFunc("SDL_SetClipboardText", [c_char_p], c_int),
1212
SDLFunc("SDL_GetClipboardText", None, c_char_p),
1313
SDLFunc("SDL_HasClipboardText", None, SDL_bool),
14+
SDLFunc("SDL_SetPrimarySelectionText", [c_char_p], c_int, added='2.26.0'),
15+
SDLFunc("SDL_GetPrimarySelectionText", None, c_char_p, added='2.26.0'),
16+
SDLFunc("SDL_HasPrimarySelectionText", None, SDL_bool, added='2.26.0'),
1417
]
1518
_ctypes = AttributeDict()
1619
for f in _funcdefs:
@@ -23,3 +26,6 @@
2326
SDL_SetClipboardText = _ctypes["SDL_SetClipboardText"]
2427
SDL_GetClipboardText = _ctypes["SDL_GetClipboardText"]
2528
SDL_HasClipboardText = _ctypes["SDL_HasClipboardText"]
29+
SDL_SetPrimarySelectionText = _ctypes["SDL_SetPrimarySelectionText"]
30+
SDL_GetPrimarySelectionText = _ctypes["SDL_GetPrimarySelectionText"]
31+
SDL_HasPrimarySelectionText = _ctypes["SDL_HasPrimarySelectionText"]

sdl2/events.py

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from ctypes import POINTER as _P
55
from .dll import version as sdl_version
66
from .dll import _bind, SDLFunc, AttributeDict
7-
from .stdinc import Sint16, Sint32, Uint8, Uint16, Uint32, SDL_bool
7+
from .stdinc import Sint16, Sint32, Uint8, Uint16, Uint32, Uint64, SDL_bool
88
from .keyboard import SDL_Keysym
99
from .joystick import SDL_JoystickID, SDL_JoystickPowerLevel
1010
from .touch import SDL_FingerID, SDL_TouchID
@@ -264,6 +264,11 @@ class SDL_MouseButtonEvent(Structure):
264264
("preciseX", c_float),
265265
("preciseY", c_float)
266266
]
267+
if sdl_version >= 2260:
268+
_mousewheel_fields += [
269+
("mouseX", Sint32),
270+
("mouseY", Sint32)
271+
]
267272
class SDL_MouseWheelEvent(Structure):
268273
_fields_ = _mousewheel_fields
269274

@@ -373,14 +378,19 @@ class SDL_ControllerTouchpadEvent(Structure):
373378
("pressure", c_float),
374379
]
375380

376-
class SDL_ControllerSensorEvent(Structure):
377-
_fields_ = [
378-
("type", Uint32),
379-
("timestamp", Uint32),
380-
("which", SDL_JoystickID),
381-
("sensor", Sint32),
382-
("data", c_float * 3),
381+
_controller_sensor_fields = [
382+
("type", Uint32),
383+
("timestamp", Uint32),
384+
("which", SDL_JoystickID),
385+
("sensor", Sint32),
386+
("data", c_float * 3),
387+
]
388+
if sdl_version >= 2260:
389+
_controller_sensor_fields += [
390+
("timestamp_us", Uint64)
383391
]
392+
class SDL_ControllerSensorEvent(Structure):
393+
_fields_ = _controller_sensor_fields
384394

385395
class SDL_AudioDeviceEvent(Structure):
386396
_fields_ = [
@@ -442,13 +452,18 @@ class SDL_DropEvent(Structure):
442452
("windowID", Uint32),
443453
]
444454

445-
class SDL_SensorEvent(Structure):
446-
_fields_ = [
447-
("type", Uint32),
448-
("timestamp", Uint32),
449-
("which", Sint32),
450-
("data", (c_float * 6)),
455+
_sensor_fields = [
456+
("type", Uint32),
457+
("timestamp", Uint32),
458+
("which", Sint32),
459+
("data", (c_float * 6)),
460+
]
461+
if sdl_version >= 2260:
462+
_sensor_fields += [
463+
("timestamp_us", Uint64)
451464
]
465+
class SDL_SensorEvent(Structure):
466+
_fields_ = _sensor_fields
452467

453468
class SDL_QuitEvent(Structure):
454469
_fields_ = [

sdl2/gamecontroller.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from ctypes import POINTER as _P
66
from .dll import _bind, SDLFunc, AttributeDict
77
from .dll import version as sdl_version
8-
from .stdinc import SDL_bool, Sint16, Uint32, Uint16, Uint8
8+
from .stdinc import SDL_bool, Sint16, Uint64, Uint32, Uint16, Uint8
99
from .joystick import (SDL_JoystickGUID, SDL_Joystick, SDL_JoystickID,
1010
SDL_JoystickGetGUIDString)
1111
from .rwops import SDL_RWops, SDL_RWFromFile
@@ -228,6 +228,10 @@ class SDL_GameController(c_void_p):
228228
[_P(SDL_GameController), SDL_SensorType, _P(c_float), c_int],
229229
returns = c_int, added = '2.0.14'
230230
),
231+
SDLFunc("SDL_GameControllerGetSensorDataWithTimestamp",
232+
[_P(SDL_GameController), SDL_SensorType, _P(Uint64), _P(c_float), c_int],
233+
returns = c_int, added = '2.26.0'
234+
),
231235
SDLFunc("SDL_GameControllerRumble",
232236
[_P(SDL_GameController), Uint16, Uint16, Uint32],
233237
returns = c_int, added = '2.0.9'
@@ -300,6 +304,7 @@ class SDL_GameController(c_void_p):
300304
SDL_GameControllerIsSensorEnabled = _ctypes["SDL_GameControllerIsSensorEnabled"]
301305
SDL_GameControllerGetSensorDataRate = _ctypes["SDL_GameControllerGetSensorDataRate"]
302306
SDL_GameControllerGetSensorData = _ctypes["SDL_GameControllerGetSensorData"]
307+
SDL_GameControllerGetSensorDataWithTimestamp = _ctypes["SDL_GameControllerGetSensorDataWithTimestamp"]
303308
SDL_GameControllerAddMappingsFromRW = _ctypes["SDL_GameControllerAddMappingsFromRW"]
304309
SDL_GameControllerAddMappingsFromFile = lambda fname: SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(fname, b"rb"), 1)
305310
SDL_GameControllerFromInstanceID = _ctypes["SDL_GameControllerFromInstanceID"]

sdl2/hints.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT",
3939
"SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS",
4040
"SDL_HINT_GRAB_KEYBOARD",
41+
"SDL_HINT_HIDAPI_IGNORE_DEVICES",
4142
"SDL_HINT_IDLE_TIMER_DISABLED",
4243
"SDL_HINT_IME_INTERNAL_EDITING",
4344
"SDL_HINT_IME_SHOW_UI",
@@ -49,9 +50,11 @@
4950
"SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE",
5051
"SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS",
5152
"SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS",
53+
"SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS",
5254
"SDL_HINT_JOYSTICK_HIDAPI_LUNA",
5355
"SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC",
5456
"SDL_HINT_JOYSTICK_HIDAPI_SHIELD",
57+
"SDL_HINT_JOYSTICK_HIDAPI_PS3",
5558
"SDL_HINT_JOYSTICK_HIDAPI_PS4",
5659
"SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE",
5760
"SDL_HINT_JOYSTICK_HIDAPI_PS5",
@@ -63,7 +66,14 @@
6366
"SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED",
6467
"SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED",
6568
"SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED",
69+
"SDL_HINT_JOYSTICK_HIDAPI_WII",
70+
"SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED",
6671
"SDL_HINT_JOYSTICK_HIDAPI_XBOX",
72+
"SDL_HINT_JOYSTICK_HIDAPI_XBOX_360",
73+
"SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED",
74+
"SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS",
75+
"SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE",
76+
"SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED",
6777
"SDL_HINT_JOYSTICK_RAWINPUT",
6878
"SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT",
6979
"SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT",
@@ -86,6 +96,7 @@
8696
"SDL_HINT_MOUSE_RELATIVE_MODE_WARP",
8797
"SDL_HINT_MOUSE_RELATIVE_SCALING",
8898
"SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE",
99+
"SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE",
89100
"SDL_HINT_MOUSE_RELATIVE_WARP_MOTION",
90101
"SDL_HINT_MOUSE_TOUCH_EVENTS",
91102
"SDL_HINT_MOUSE_AUTO_CAPTURE",
@@ -105,6 +116,7 @@
105116
"SDL_HINT_RENDER_OPENGL_SHADERS",
106117
"SDL_HINT_RENDER_SCALE_QUALITY",
107118
"SDL_HINT_RENDER_VSYNC",
119+
"SDL_HINT_PS2_DYNAMIC_VSYNC",
108120
"SDL_HINT_RETURN_KEY_HIDES_IME",
109121
"SDL_HINT_RPI_VIDEO_LAYER",
110122
"SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME",
@@ -125,6 +137,7 @@
125137
"SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR",
126138
"SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR",
127139
"SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION",
140+
"SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP",
128141
"SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT",
129142
"SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL",
130143
"SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN",
@@ -208,6 +221,7 @@
208221
SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN = b"SDL_VIDEO_FOREIGN_WINDOW_VULKAN"
209222
SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR = b"SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR"
210223
SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR = b"SDL_VIDEO_WAYLAND_PREFER_LIBDECOR"
224+
SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP = b"SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP"
211225
SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION = b"SDL_VIDEO_WAYLAND_MODE_EMULATION"
212226
SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT = b"SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
213227
SDL_HINT_VIDEO_X11_FORCE_EGL = b"SDL_VIDEO_X11_FORCE_EGL"
@@ -264,6 +278,7 @@
264278
SDL_HINT_MOUSE_RELATIVE_MODE_WARP = b"SDL_MOUSE_RELATIVE_MODE_WARP"
265279
SDL_HINT_MOUSE_RELATIVE_SCALING = b"SDL_MOUSE_RELATIVE_SCALING"
266280
SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE = b"SDL_MOUSE_RELATIVE_SPEED_SCALE"
281+
SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE = b"SDL_MOUSE_RELATIVE_SYSTEM_SCALE"
267282
SDL_HINT_MOUSE_RELATIVE_WARP_MOTION = b"SDL_MOUSE_RELATIVE_WARP_MOTION"
268283
SDL_HINT_MOUSE_TOUCH_EVENTS = b"SDL_MOUSE_TOUCH_EVENTS"
269284
SDL_HINT_TOUCH_MOUSE_EVENTS = b"SDL_TOUCH_MOUSE_EVENTS"
@@ -280,16 +295,20 @@
280295
SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES = b"SDL_GAMECONTROLLER_IGNORE_DEVICES"
281296
SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT = b"SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
282297
SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS = b"SDL_GAMECONTROLLER_USE_BUTTON_LABELS"
298+
SDL_HINT_HIDAPI_IGNORE_DEVICES = b"SDL_HIDAPI_IGNORE_DEVICES"
283299
SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS = b"SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
284300
SDL_HINT_JOYSTICK_HIDAPI = b"SDL_JOYSTICK_HIDAPI"
285301
SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT = b"SDL_JOYSTICK_HIDAPI_CORRELATE_XINPUT"
286302
SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE = b"SDL_JOYSTICK_HIDAPI_GAMECUBE"
287303
SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE = b"SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE"
288304
SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS = b"SDL_JOYSTICK_HIDAPI_JOY_CONS"
305+
SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED = b"SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED"
289306
SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS = b"SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS"
307+
SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS = b"SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS"
290308
SDL_HINT_JOYSTICK_HIDAPI_LUNA = b"SDL_JOYSTICK_HIDAPI_LUNA"
291309
SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC = b"SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC"
292310
SDL_HINT_JOYSTICK_HIDAPI_SHIELD = b"SDL_JOYSTICK_HIDAPI_SHIELD"
311+
SDL_HINT_JOYSTICK_HIDAPI_PS3 = b"SDL_JOYSTICK_HIDAPI_PS3"
293312
SDL_HINT_JOYSTICK_HIDAPI_PS4 = b"SDL_JOYSTICK_HIDAPI_PS4"
294313
SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE = b"SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"
295314
SDL_HINT_JOYSTICK_HIDAPI_PS5 = b"SDL_JOYSTICK_HIDAPI_PS5"
@@ -299,9 +318,15 @@
299318
SDL_HINT_JOYSTICK_HIDAPI_STEAM = b"SDL_JOYSTICK_HIDAPI_STEAM"
300319
SDL_HINT_JOYSTICK_HIDAPI_SWITCH = b"SDL_JOYSTICK_HIDAPI_SWITCH"
301320
SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED = b"SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED"
302-
SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED = b"SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED"
303321
SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED = b"SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED"
322+
SDL_HINT_JOYSTICK_HIDAPI_WII = b"SDL_JOYSTICK_HIDAPI_WII"
323+
SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED = b"SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED"
304324
SDL_HINT_JOYSTICK_HIDAPI_XBOX = b"SDL_JOYSTICK_HIDAPI_XBOX"
325+
SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 = b"SDL_JOYSTICK_HIDAPI_XBOX_360"
326+
SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED = b"SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED"
327+
SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS = b"SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS"
328+
SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE = b"SDL_JOYSTICK_HIDAPI_XBOX_ONE"
329+
SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED = b"SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED"
305330
SDL_HINT_JOYSTICK_RAWINPUT = b"SDL_JOYSTICK_RAWINPUT"
306331
SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT = b"SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT"
307332
SDL_HINT_JOYSTICK_ROG_CHAKRAM = b"SDL_JOYSTICK_ROG_CHAKRAM"
@@ -321,6 +346,7 @@
321346
SDL_HINT_MAC_BACKGROUND_APP = b"SDL_MAC_BACKGROUND_APP"
322347
SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK = b"SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
323348
SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH = b"SDL_MAC_OPENGL_ASYNC_DISPATCH"
349+
SDL_HINT_PS2_DYNAMIC_VSYNC = b"SDL_PS2_DYNAMIC_VSYNC"
324350
SDL_HINT_RPI_VIDEO_LAYER = b"SDL_RPI_VIDEO_LAYER"
325351
SDL_HINT_RENDER_DIRECT3D11_DEBUG = b"SDL_RENDER_DIRECT3D11_DEBUG"
326352
SDL_HINT_RENDER_DIRECT3D_THREADSAFE = b"SDL_RENDER_DIRECT3D_THREADSAFE"
@@ -381,10 +407,12 @@
381407
SDLFunc("SDL_SetHintWithPriority", [c_char_p, c_char_p, SDL_HintPriority], SDL_bool),
382408
SDLFunc("SDL_SetHint", [c_char_p, c_char_p], SDL_bool),
383409
SDLFunc("SDL_GetHint", [c_char_p], c_char_p),
410+
SDLFunc("SDL_ResetHint", [c_char_p], SDL_bool, added='2.24.0'),
411+
SDLFunc("SDL_ResetHints", None, None, added='2.26.0'),
384412
SDLFunc("SDL_GetHintBoolean", [c_char_p, SDL_bool], SDL_bool, added='2.0.5'),
385413
SDLFunc("SDL_ClearHints"),
386414
SDLFunc("SDL_AddHintCallback", [c_char_p, SDL_HintCallback, c_void_p]),
387-
SDLFunc("SDL_DelHintCallback",[c_char_p, SDL_HintCallback, c_void_p]),
415+
SDLFunc("SDL_DelHintCallback", [c_char_p, SDL_HintCallback, c_void_p]),
388416
]
389417
_ctypes = AttributeDict()
390418
for f in _funcdefs:
@@ -397,6 +425,8 @@
397425
SDL_SetHintWithPriority = _ctypes["SDL_SetHintWithPriority"]
398426
SDL_SetHint = _ctypes["SDL_SetHint"]
399427
SDL_GetHint = _ctypes["SDL_GetHint"]
428+
SDL_ResetHint = _ctypes["SDL_ResetHint"]
429+
SDL_ResetHints = _ctypes["SDL_ResetHints"]
400430
SDL_GetHintBoolean = _ctypes["SDL_GetHintBoolean"]
401431
SDL_ClearHints = _ctypes["SDL_ClearHints"]
402432
SDL_AddHintCallback = _ctypes["SDL_AddHintCallback"]

sdl2/joystick.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ class SDL_VirtualJoystickDesc(Structure):
156156
SDLFunc("SDL_JoystickGetType", [_P(SDL_Joystick)], SDL_JoystickType, added='2.0.6'),
157157
SDLFunc("SDL_JoystickGetGUIDString", [SDL_JoystickGUID, c_char_p, c_int]),
158158
SDLFunc("SDL_JoystickGetGUIDFromString", [c_char_p], SDL_JoystickGUID),
159+
SDLFunc("SDL_GetJoystickGUIDInfo",
160+
[SDL_JoystickGUID, _P(Uint16), _P(Uint16), _P(Uint16), _P(Uint16)],
161+
None, added = '2.26.0'
162+
),
159163
SDLFunc("SDL_JoystickGetAttached", [_P(SDL_Joystick)], SDL_bool),
160164
SDLFunc("SDL_JoystickInstanceID", [_P(SDL_Joystick)], SDL_JoystickID),
161165
SDLFunc("SDL_JoystickNumAxes", [_P(SDL_Joystick)], c_int),
@@ -267,3 +271,12 @@ def SDL_JoystickGetGUIDString(guid, pszGUID, cbGUID):
267271
s += "{:x}".format(g & 0x0F)
268272
s = s.encode('utf-8')
269273
pszGUID.value = s[:(cbGUID * 2)]
274+
275+
if sys.version_info >= (3, 7, 0, 'final'):
276+
SDL_GetJoystickGUIDInfo = _ctypes["SDL_GetJoystickGUIDInfo"]
277+
else:
278+
def SDL_GetJoystickGUIDInfo(guid, vendor, product, version, crc16):
279+
# We can't modify ctypes arguments passed with byref in Python,
280+
# so to avoid a segfault on older Python versions we just do
281+
# nothing here since we can't replicate its functionality.
282+
pass

0 commit comments

Comments
 (0)