Skip to content

Commit 356c5ff

Browse files
committed
EventState SDL3 compat
1 parent 04ca5ff commit 356c5ff

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

src_c/_pygame.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ PG_UnlockMutex(SDL_mutex *mutex)
101101
/* Mask to test if surface flags are in a fullscreen window. */
102102
#define PG_WINDOW_FULLSCREEN_INCLUSIVE SDL_WINDOW_FULLSCREEN
103103

104+
#define PG_SetEventEnabled(type, enabled) SDL_SetEventEnabled(type, enabled)
105+
#define PG_EventEnabled(type) SDL_EventEnabled(type)
106+
#define PG_SetJoystickEventsEnabled(enabled) \
107+
SDL_SetJoystickEventsEnabled(enabled)
108+
104109
#else /* ~SDL_VERSION_ATLEAST(3, 0, 0)*/
105110
#define PG_ShowCursor() SDL_ShowCursor(SDL_ENABLE)
106111
#define PG_HideCursor() SDL_ShowCursor(SDL_DISABLE)
@@ -155,6 +160,13 @@ PG_UnlockMutex(SDL_mutex *mutex)
155160
* SDL_WINDOW_FULLSCREEN. */
156161
#define PG_WINDOW_FULLSCREEN_INCLUSIVE SDL_WINDOW_FULLSCREEN_DESKTOP
157162

163+
/* SDL_EventState is meant to take SDL_IGNORE or SDL_ENABLE, but it also
164+
* works identically with SDL_FALSE and SDL_TRUE, because they evaluate to
165+
* the same values, respectively. */
166+
#define PG_SetEventEnabled(type, enabled) SDL_EventState(type, enabled)
167+
#define PG_EventEnabled(type) SDL_EventState(type, SDL_QUERY)
168+
#define PG_SetJoystickEventsEnabled(enabled) SDL_JoystickEventState(enabled)
169+
158170
#if SDL_VERSION_ATLEAST(2, 0, 14)
159171
#define PG_SurfaceHasRLE SDL_HasSurfaceRLE
160172
#else

src_c/event.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ _pg_translate_windowevent(void *_, SDL_Event *event)
426426
{
427427
if (event->type == SDL_WINDOWEVENT) {
428428
event->type = PGE_WINDOWSHOWN + event->window.event - 1;
429-
return SDL_EventState(_pg_pgevent_proxify(event->type), SDL_QUERY);
429+
return PG_EventEnabled(_pg_pgevent_proxify(event->type));
430430
}
431431
return 1;
432432
}
@@ -599,7 +599,7 @@ pg_event_filter(void *_, SDL_Event *event)
599599
return RAISE(pgExc_SDLError, SDL_GetError()), 0;
600600
*/
601601
}
602-
return SDL_EventState(_pg_pgevent_proxify(event->type), SDL_QUERY);
602+
return PG_EventEnabled(_pg_pgevent_proxify(event->type));
603603
}
604604

605605
/* The two keyrepeat functions below modify state accessed by the event filter,
@@ -2142,7 +2142,7 @@ pg_event_set_allowed(PyObject *self, PyObject *obj)
21422142
if (obj == Py_None) {
21432143
int i;
21442144
for (i = SDL_FIRSTEVENT; i < SDL_LASTEVENT; i++) {
2145-
SDL_EventState(i, SDL_ENABLE);
2145+
PG_SetEventEnabled(i, SDL_TRUE);
21462146
}
21472147
}
21482148
else {
@@ -2156,7 +2156,7 @@ pg_event_set_allowed(PyObject *self, PyObject *obj)
21562156
Py_DECREF(seq);
21572157
return NULL;
21582158
}
2159-
SDL_EventState(_pg_pgevent_proxify(type), SDL_ENABLE);
2159+
PG_SetEventEnabled(_pg_pgevent_proxify(type), SDL_TRUE);
21602160
}
21612161
Py_DECREF(seq);
21622162
}
@@ -2175,7 +2175,7 @@ pg_event_set_blocked(PyObject *self, PyObject *obj)
21752175
int i;
21762176
/* Start at PGPOST_EVENTBEGIN */
21772177
for (i = PGPOST_EVENTBEGIN; i < SDL_LASTEVENT; i++) {
2178-
SDL_EventState(i, SDL_IGNORE);
2178+
PG_SetEventEnabled(i, SDL_FALSE);
21792179
}
21802180
}
21812181
else {
@@ -2189,14 +2189,14 @@ pg_event_set_blocked(PyObject *self, PyObject *obj)
21892189
Py_DECREF(seq);
21902190
return NULL;
21912191
}
2192-
SDL_EventState(_pg_pgevent_proxify(type), SDL_IGNORE);
2192+
PG_SetEventEnabled(_pg_pgevent_proxify(type), SDL_FALSE);
21932193
}
21942194
Py_DECREF(seq);
21952195
}
21962196
/* Never block SDL_WINDOWEVENT, we need them for translation */
2197-
SDL_EventState(SDL_WINDOWEVENT, SDL_ENABLE);
2197+
PG_SetEventEnabled(SDL_WINDOWEVENT, SDL_TRUE);
21982198
/* Never block PGE_KEYREPEAT too, its needed for pygame internal use */
2199-
SDL_EventState(PGE_KEYREPEAT, SDL_ENABLE);
2199+
PG_SetEventEnabled(PGE_KEYREPEAT, SDL_TRUE);
22002200
Py_RETURN_NONE;
22012201
}
22022202

@@ -2219,8 +2219,7 @@ pg_event_get_blocked(PyObject *self, PyObject *obj)
22192219
Py_DECREF(seq);
22202220
return NULL;
22212221
}
2222-
if (SDL_EventState(_pg_pgevent_proxify(type), SDL_QUERY) ==
2223-
SDL_IGNORE) {
2222+
if (PG_EventEnabled(_pg_pgevent_proxify(type)) == SDL_FALSE) {
22242223
isblocked = 1;
22252224
break;
22262225
}

src_c/joystick.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ init(PyObject *self, PyObject *_null)
4141
if (!SDL_WasInit(SDL_INIT_JOYSTICK)) {
4242
if (SDL_InitSubSystem(SDL_INIT_JOYSTICK))
4343
return RAISE(pgExc_SDLError, SDL_GetError());
44-
SDL_JoystickEventState(SDL_ENABLE);
44+
PG_SetJoystickEventsEnabled(SDL_TRUE);
4545
}
4646
Py_RETURN_NONE;
4747
}
@@ -60,7 +60,7 @@ quit(PyObject *self, PyObject *_null)
6060
}
6161

6262
if (SDL_WasInit(SDL_INIT_JOYSTICK)) {
63-
SDL_JoystickEventState(SDL_ENABLE);
63+
PG_SetJoystickEventsEnabled(SDL_TRUE);
6464
SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
6565
}
6666
Py_RETURN_NONE;

0 commit comments

Comments
 (0)