From 7ca0d15d64edd29f4ad6aae9bdd45e7d3c0c3123 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 8 Dec 2022 00:08:51 -0500 Subject: [PATCH] events: Changed SDL_GetEventState from a macro to a function. Fixes #6773. --- docs/README-migration.md | 2 ++ include/SDL3/SDL_events.h | 22 ++++++++++++++++++++-- src/dynapi/SDL_dynapi.sym | 1 + src/dynapi/SDL_dynapi_overrides.h | 1 + src/dynapi/SDL_dynapi_procs.h | 1 + src/events/SDL_events.c | 8 ++++++-- 6 files changed, 31 insertions(+), 4 deletions(-) diff --git a/docs/README-migration.md b/docs/README-migration.md index 2c95b3118..25ab3a25a 100644 --- a/docs/README-migration.md +++ b/docs/README-migration.md @@ -56,6 +56,8 @@ The `timestamp_us` member of the sensor events has been renamed `sensor_timestam You should set the `event.common.timestamp` field before passing an event to `SDL_PushEvent()`. If the timestamp is 0 it will be filled in with `SDL_GetTicksNS()`. +SDL_GetEventState used to be a macro, now it's a real function, but otherwise functions identically. + ## SDL_gamecontroller.h diff --git a/include/SDL3/SDL_events.h b/include/SDL3/SDL_events.h index a666c2d0d..defcba5ad 100644 --- a/include/SDL3/SDL_events.h +++ b/include/SDL3/SDL_events.h @@ -1097,7 +1097,7 @@ extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, #define SDL_ENABLE 1 /** - * Set the state of processing events by type. + * Set or query the state of processing events by type. * * `state` may be any of the following: * @@ -1116,8 +1116,26 @@ extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, * \sa SDL_GetEventState */ extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); + +/** + * Query the state of processing events by type. + * + * This is equivalent to calling `SDL_EventState(type, SDL_QUERY)`. + * + * In SDL3, this is a proper function, but in SDL2, this was a macro. + * + * \param type the type of event; see SDL_EventType for details + * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state + * of the event before this function makes any changes to it. + * + * \since This function is available since SDL 3.0.0. + * + * \sa SDL_EventState + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetEventState(Uint32 type); + /* @} */ -#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + /** * Allocate a set of user-defined events, and return the beginning event diff --git a/src/dynapi/SDL_dynapi.sym b/src/dynapi/SDL_dynapi.sym index 948c6168f..f83558094 100644 --- a/src/dynapi/SDL_dynapi.sym +++ b/src/dynapi/SDL_dynapi.sym @@ -864,6 +864,7 @@ SDL3_0.0.0 { SDL_GetPowerInfo; SDL_GetTicksNS; SDL_DelayNS; + SDL_GetEventState; # extra symbols go here (don't modify this line) local: *; }; diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index d8249bb18..1139766b7 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -888,3 +888,4 @@ #define SDL_memset4 SDL_memset4_REAL #define SDL_GetTicksNS SDL_GetTicksNS_REAL #define SDL_DelayNS SDL_DelayNS_REAL +#define SDL_GetEventState SDL_GetEventState_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index 53dede94f..5b2701d63 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -964,3 +964,4 @@ SDL_DYNAPI_PROC(int,SDL_GetWindowWMInfo,(SDL_Window *a, SDL_SysWMinfo *b, Uint32 SDL_DYNAPI_PROC(void*,SDL_memset4,(void *a, Uint32 b, size_t c),(a,b,c),return) SDL_DYNAPI_PROC(Uint64,SDL_GetTicksNS,(void),(),return) SDL_DYNAPI_PROC(void,SDL_DelayNS,(Uint64 a),(a),) +SDL_DYNAPI_PROC(Uint8,SDL_GetEventState,(Uint32 a),(a),return) diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index 07adf42c9..bfad6e046 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -1388,8 +1388,12 @@ Uint8 SDL_EventState(Uint32 type, int state) return current_state; } -Uint32 -SDL_RegisterEvents(int numevents) +Uint8 SDL_GetEventState(Uint32 type) +{ + return SDL_EventState(type, SDL_QUERY); +} + +Uint32 SDL_RegisterEvents(int numevents) { Uint32 event_base;