Procházet zdrojové kódy

events: Changed SDL_GetEventState from a macro to a function.

Fixes #6773.
Ryan C. Gordon před 2 roky
rodič
revize
7ca0d15d64

+ 2 - 0
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
 

+ 20 - 2
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

+ 1 - 0
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: *;
 };

+ 1 - 0
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

+ 1 - 0
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)

+ 6 - 2
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;