From 652b34bd150d70cbae7e6e87c1f3392346977148 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 29 May 2024 10:30:19 -0700 Subject: [PATCH] Added SDL_DumpProperties() for internal debugging --- src/SDL_properties.c | 32 ++++++++++++++++++++++++++++++++ src/SDL_properties_c.h | 1 + 2 files changed, 33 insertions(+) diff --git a/src/SDL_properties.c b/src/SDL_properties.c index d2dca5c9f..663414558 100644 --- a/src/SDL_properties.c +++ b/src/SDL_properties.c @@ -779,6 +779,38 @@ int SDL_EnumerateProperties(SDL_PropertiesID props, SDL_EnumeratePropertiesCallb return 0; } +static void SDLCALL SDL_DumpPropertiesCallback(void *userdata, SDL_PropertiesID props, const char *name) +{ + switch (SDL_GetPropertyType(props, name)) { + case SDL_PROPERTY_TYPE_POINTER: + SDL_Log("%s: %p\n", name, SDL_GetProperty(props, name, NULL)); + break; + case SDL_PROPERTY_TYPE_STRING: + SDL_Log("%s: \"%s\"\n", name, SDL_GetStringProperty(props, name, "")); + break; + case SDL_PROPERTY_TYPE_NUMBER: + { + Sint64 value = SDL_GetNumberProperty(props, name, 0); + SDL_Log("%s: %" SDL_PRIs64 " (%" SDL_PRIx64 ")\n", name, value, value); + } + break; + case SDL_PROPERTY_TYPE_FLOAT: + SDL_Log("%s: %g\n", name, SDL_GetFloatProperty(props, name, 0.0f)); + break; + case SDL_PROPERTY_TYPE_BOOLEAN: + SDL_Log("%s: %s\n", name, SDL_GetBooleanProperty(props, name, SDL_FALSE) ? "true" : "false"); + break; + default: + SDL_Log("%s UNKNOWN TYPE\n", name); + break; + } +} + +int SDL_DumpProperties(SDL_PropertiesID props) +{ + return SDL_EnumerateProperties(props, SDL_DumpPropertiesCallback, NULL); +} + void SDL_DestroyProperties(SDL_PropertiesID props) { if (!props) { diff --git a/src/SDL_properties_c.h b/src/SDL_properties_c.h index d996fa12f..fbbb7cce5 100644 --- a/src/SDL_properties_c.h +++ b/src/SDL_properties_c.h @@ -22,4 +22,5 @@ extern int SDL_InitProperties(void); extern int SDL_SetFreeableProperty(SDL_PropertiesID props, const char *name, void *value); extern int SDL_SetSurfaceProperty(SDL_PropertiesID props, const char *name, SDL_Surface *surface); +extern int SDL_DumpProperties(SDL_PropertiesID props); extern void SDL_QuitProperties(void);