Make interactive tests work on SDL3 built with disabled param checking (or assert on invalid)

This commit is contained in:
Anonymous Maarten
2026-08-12 23:01:48 +02:00
committed by Sam Lantinga
parent 573862505d
commit b30cda60c1
8 changed files with 32 additions and 16 deletions

View File

@@ -102,7 +102,9 @@ SDL_AppResult SDL_AppIterate(void *appstate)
SDL_RenderClear(renderer);
for (i = 0; i < SDL_arraysize(textures); i++) {
SDL_RenderTexture(renderer, textures[i], NULL, &texture_rects[i]);
if (textures[i]) {
SDL_RenderTexture(renderer, textures[i], NULL, &texture_rects[i]);
}
}
SDL_RenderPresent(renderer);

View File

@@ -344,7 +344,7 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) {
case SDL_EVENT_DROP_FILE:
load_file(vm, event->drop.data);
break;
case SDL_EVENT_KEY_DOWN:
#ifndef SDL_PLATFORM_EMSCRIPTEN
if (event->key.key == SDLK_ESCAPE) {
@@ -366,8 +366,8 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) {
vm->keystate |= keycode_mask(event->key.key);
}
break;
case SDL_EVENT_KEY_UP:
case SDL_EVENT_KEY_UP:
if (vm->positional_input) {
vm->keystate &= ~scancode_mask(event->key.scancode);
} else {

View File

@@ -126,7 +126,9 @@ SDL_AppResult SDL_AppIterate(void *appstate)
if (surface) {
/* Rebuild converted_texture if the dimensions have changed (window resized, etc). */
if ((surface->w != converted_texture_width) || (surface->h != converted_texture_height)) {
SDL_DestroyTexture(converted_texture);
if (converted_texture) {
SDL_DestroyTexture(converted_texture);
}
converted_texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, surface->w, surface->h);
if (!converted_texture) {
SDL_Log("Couldn't (re)create conversion texture: %s", SDL_GetError());

View File

@@ -1589,7 +1589,7 @@ int main(int argc, char *argv[])
}
if (flushing && !decoded) {
if (SDL_GetAudioStreamQueued(audio) > 0 && !nodelay) {
if (audio && SDL_GetAudioStreamQueued(audio) > 0 && !nodelay) {
/* Wait a little bit for the audio to finish */
SDL_Delay(10);
} else {
@@ -1616,11 +1616,15 @@ quit:
avcodec_free_context(&audio_context);
avcodec_free_context(&video_context);
avformat_close_input(&ic);
SDL_DestroyRenderer(renderer);
if (renderer) {
SDL_DestroyRenderer(renderer);
}
if (vulkan_context) {
DestroyVulkanVideoContext(vulkan_context);
}
SDL_DestroyWindow(window);
if (window) {
SDL_DestroyWindow(window);
}
SDL_Quit();
SDLTest_CommonDestroyState(state);
return return_code;

View File

@@ -210,8 +210,12 @@ static void loop(void *arg)
/* Check for events */
while (SDL_PollEvent(&event)) {
SDL_Window *window;
SDLTest_CommonEvent(state, &event, done);
SDL_ConvertEventToRenderCoordinates(SDL_GetRenderer(SDL_GetWindowFromEvent(&event)), &event);
window = SDL_GetWindowFromEvent(&event);
if (window) {
SDL_ConvertEventToRenderCoordinates(SDL_GetRenderer(window), &event);
}
switch (event.type) {
case SDL_EVENT_MOUSE_BUTTON_DOWN:
mouse_begin_x = event.button.x;

View File

@@ -77,7 +77,7 @@ int main(int argc, char *argv[])
quit = 1;
break;
} else if (e.type == SDL_EVENT_WINDOW_CLOSE_REQUESTED) {
if (e.window.windowID == SDL_GetWindowID(w2)) {
if (w2 && e.window.windowID == SDL_GetWindowID(w2)) {
SDL_DestroyRenderer(r2);
SDL_DestroyWindow(w2);
r2 = NULL;

View File

@@ -104,7 +104,9 @@ static bool UpdateRotation(SDL_Renderer *renderer)
return false;
}
SDL_DestroyTexture(texture);
if (texture) {
SDL_DestroyTexture(texture);
}
texture = SDL_CreateTextureFromSurface(renderer, rotated);
SDL_DestroySurface(rotated);
if (!texture) {

View File

@@ -674,9 +674,9 @@ static bool run_all_format_test(SDL_Window *window, const char *requested_render
for (int i = 0; i < SDL_GetNumRenderDrivers() && !quit; ++i) {
const char *renderer_name = SDL_GetRenderDriver(i);
if (requested_renderer && SDL_strcmp(renderer_name, requested_renderer) != 0) {
continue;
}
if (requested_renderer && SDL_strcmp(renderer_name, requested_renderer) != 0) {
continue;
}
SDL_Renderer *renderer = SDL_CreateRenderer(window, renderer_name);
if (!renderer) {
@@ -1047,9 +1047,11 @@ int main(int argc, char **argv)
}
done:
SDL_free(filename);
SDL_free(filename);
SDL_DestroySurface(original);
SDL_DestroyWindow(window);
if (window) {
SDL_DestroyWindow(window);
}
SDL_Quit();
SDLTest_CommonDestroyState(state);
return result;