From c25a0b046a218e368ef916c753341e08171dce4c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 17 Sep 2025 07:43:35 -0700 Subject: [PATCH] Make SDL_ObjectValid() inline for performance (thanks @mechakotik!) --- src/SDL_utils.c | 12 ++---------- src/SDL_utils_c.h | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/SDL_utils.c b/src/SDL_utils.c index 4999a537b0..b2df68aeaf 100644 --- a/src/SDL_utils.c +++ b/src/SDL_utils.c @@ -137,7 +137,7 @@ Uint32 SDL_GetNextObjectID(void) static SDL_InitState SDL_objects_init; static SDL_HashTable *SDL_objects; -static bool SDL_object_validation; +bool SDL_object_validation = false; static void SDLCALL SDL_InvalidParamChecksChanged(void *userdata, const char *name, const char *oldValue, const char *hint) { @@ -195,16 +195,8 @@ void SDL_SetObjectValid(void *object, SDL_ObjectType type, bool valid) } } -bool SDL_ObjectValid(void *object, SDL_ObjectType type) +bool SDL_FindObject(void *object, SDL_ObjectType type) { - if (!object) { - return false; - } - - if (!SDL_object_validation) { - return true; - } - const void *object_type; if (!SDL_FindInHashTable(SDL_objects, object, &object_type)) { return false; diff --git a/src/SDL_utils_c.h b/src/SDL_utils_c.h index b70b64e963..93d1abe47c 100644 --- a/src/SDL_utils_c.h +++ b/src/SDL_utils_c.h @@ -67,10 +67,25 @@ typedef enum extern Uint32 SDL_GetNextObjectID(void); extern void SDL_SetObjectValid(void *object, SDL_ObjectType type, bool valid); -extern bool SDL_ObjectValid(void *object, SDL_ObjectType type); +extern bool SDL_FindObject(void *object, SDL_ObjectType type); extern int SDL_GetObjects(SDL_ObjectType type, void **objects, int count); extern void SDL_SetObjectsInvalid(void); +extern bool SDL_object_validation; + +SDL_FORCE_INLINE bool SDL_ObjectValid(void *object, SDL_ObjectType type) +{ + if (!object) { + return false; + } + + if (!SDL_object_validation) { + return true; + } + + return SDL_FindObject(object, type); +} + extern const char *SDL_GetPersistentString(const char *string); extern char *SDL_CreateDeviceName(Uint16 vendor, Uint16 product, const char *vendor_name, const char *product_name, const char *default_name);