@@ -137,6 +137,7 @@ Uint32 SDL_GetNextObjectID(void)
137
137
138
138
static SDL_InitState SDL_objects_init ;
139
139
static SDL_HashTable * SDL_objects ;
140
+ static bool check_validity = true;
140
141
141
142
static Uint32 SDLCALL SDL_HashObject (void * unused , const void * key )
142
143
{
@@ -153,6 +154,7 @@ void SDL_SetObjectValid(void *object, SDL_ObjectType type, bool valid)
153
154
SDL_assert (object != NULL );
154
155
155
156
if (SDL_ShouldInit (& SDL_objects_init )) {
157
+ check_validity = SDL_GetHintBoolean (SDL_HINT_CHECK_OBJECT_VALIDITY , true);
156
158
SDL_objects = SDL_CreateHashTable (0 , true, SDL_HashObject , SDL_KeyMatchObject , NULL , NULL );
157
159
const bool initialized = (SDL_objects != NULL );
158
160
SDL_SetInitialized (& SDL_objects_init , initialized );
@@ -161,10 +163,12 @@ void SDL_SetObjectValid(void *object, SDL_ObjectType type, bool valid)
161
163
}
162
164
}
163
165
164
- if (valid ) {
165
- SDL_InsertIntoHashTable (SDL_objects , object , (void * )(uintptr_t )type , true);
166
- } else {
167
- SDL_RemoveFromHashTable (SDL_objects , object );
166
+ if (check_validity ) {
167
+ if (valid ) {
168
+ SDL_InsertIntoHashTable (SDL_objects , object , (void * )(uintptr_t )type , true);
169
+ } else {
170
+ SDL_RemoveFromHashTable (SDL_objects , object );
171
+ }
168
172
}
169
173
}
170
174
@@ -174,6 +178,10 @@ bool SDL_ObjectValid(void *object, SDL_ObjectType type)
174
178
return false;
175
179
}
176
180
181
+ if (!check_validity ) {
182
+ return true;
183
+ }
184
+
177
185
const void * object_type ;
178
186
if (!SDL_FindInHashTable (SDL_objects , object , & object_type )) {
179
187
return false;
0 commit comments