mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-22 04:38:30 +00:00
Added SDL_GetGlobalProperties()
We'll undoubtedly want to have global properties available
This commit is contained in:
parent
151cdfa99f
commit
979214363f
5 changed files with 37 additions and 0 deletions
|
@ -39,6 +39,19 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
typedef Uint32 SDL_PropertiesID;
|
typedef Uint32 SDL_PropertiesID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the global SDL properties
|
||||||
|
*
|
||||||
|
* \returns a valid property ID on success or 0 on failure; call
|
||||||
|
* SDL_GetError() for more information.
|
||||||
|
*
|
||||||
|
* \since This function is available since SDL 3.0.0.
|
||||||
|
*
|
||||||
|
* \sa SDL_GetProperty
|
||||||
|
* \sa SDL_SetProperty
|
||||||
|
*/
|
||||||
|
extern DECLSPEC SDL_PropertiesID SDLCALL SDL_GetGlobalProperties(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a set of properties
|
* Create a set of properties
|
||||||
*
|
*
|
||||||
|
|
|
@ -39,6 +39,7 @@ typedef struct
|
||||||
static SDL_HashTable *SDL_properties;
|
static SDL_HashTable *SDL_properties;
|
||||||
static SDL_RWLock *SDL_properties_lock;
|
static SDL_RWLock *SDL_properties_lock;
|
||||||
static SDL_PropertiesID SDL_last_properties_id;
|
static SDL_PropertiesID SDL_last_properties_id;
|
||||||
|
static SDL_PropertiesID SDL_global_properties;
|
||||||
|
|
||||||
|
|
||||||
static void SDL_FreeProperty(const void *key, const void *value, void *data)
|
static void SDL_FreeProperty(const void *key, const void *value, void *data)
|
||||||
|
@ -81,11 +82,23 @@ int SDL_InitProperties(void)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Create the global properties here to avoid race conditions later */
|
||||||
|
if (!SDL_global_properties) {
|
||||||
|
SDL_global_properties = SDL_CreateProperties();
|
||||||
|
if (!SDL_global_properties) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_QuitProperties(void)
|
void SDL_QuitProperties(void)
|
||||||
{
|
{
|
||||||
|
if (SDL_global_properties) {
|
||||||
|
SDL_DestroyProperties(SDL_global_properties);
|
||||||
|
SDL_global_properties = 0;
|
||||||
|
}
|
||||||
if (SDL_properties) {
|
if (SDL_properties) {
|
||||||
SDL_DestroyHashTable(SDL_properties);
|
SDL_DestroyHashTable(SDL_properties);
|
||||||
SDL_properties = NULL;
|
SDL_properties = NULL;
|
||||||
|
@ -96,6 +109,14 @@ void SDL_QuitProperties(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_PropertiesID SDL_GetGlobalProperties(void)
|
||||||
|
{
|
||||||
|
if (!SDL_properties && SDL_InitProperties() < 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return SDL_global_properties;
|
||||||
|
}
|
||||||
|
|
||||||
SDL_PropertiesID SDL_CreateProperties(void)
|
SDL_PropertiesID SDL_CreateProperties(void)
|
||||||
{
|
{
|
||||||
SDL_PropertiesID props = 0;
|
SDL_PropertiesID props = 0;
|
||||||
|
|
|
@ -922,6 +922,7 @@ SDL3_0.0.0 {
|
||||||
SDL_GetDisplayProperties;
|
SDL_GetDisplayProperties;
|
||||||
SDL_SetPropertyWithCleanup;
|
SDL_SetPropertyWithCleanup;
|
||||||
SDL_SetX11EventHook;
|
SDL_SetX11EventHook;
|
||||||
|
SDL_GetGlobalProperties;
|
||||||
# extra symbols go here (don't modify this line)
|
# extra symbols go here (don't modify this line)
|
||||||
local: *;
|
local: *;
|
||||||
};
|
};
|
||||||
|
|
|
@ -947,3 +947,4 @@
|
||||||
#define SDL_GetDisplayProperties SDL_GetDisplayProperties_REAL
|
#define SDL_GetDisplayProperties SDL_GetDisplayProperties_REAL
|
||||||
#define SDL_SetPropertyWithCleanup SDL_SetPropertyWithCleanup_REAL
|
#define SDL_SetPropertyWithCleanup SDL_SetPropertyWithCleanup_REAL
|
||||||
#define SDL_SetX11EventHook SDL_SetX11EventHook_REAL
|
#define SDL_SetX11EventHook SDL_SetX11EventHook_REAL
|
||||||
|
#define SDL_GetGlobalProperties SDL_GetGlobalProperties_REAL
|
||||||
|
|
|
@ -980,3 +980,4 @@ SDL_DYNAPI_PROC(void*,SDL_AllocateEventMemory,(size_t a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetDisplayProperties,(SDL_DisplayID a),(a),return)
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetDisplayProperties,(SDL_DisplayID a),(a),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_SetPropertyWithCleanup,(SDL_PropertiesID a, const char *b, void *c, void (SDLCALL *d)(void *userdata, void *value), void *e),(a,b,c,d,e),return)
|
SDL_DYNAPI_PROC(int,SDL_SetPropertyWithCleanup,(SDL_PropertiesID a, const char *b, void *c, void (SDLCALL *d)(void *userdata, void *value), void *e),(a,b,c,d,e),return)
|
||||||
SDL_DYNAPI_PROC(void,SDL_SetX11EventHook,(SDL_X11EventHook a, void *b),(a,b),)
|
SDL_DYNAPI_PROC(void,SDL_SetX11EventHook,(SDL_X11EventHook a, void *b),(a,b),)
|
||||||
|
SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetGlobalProperties,(void),(),return)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue