From b30cda60c1d1b7371d71d6f0ca58b5ca948c6621 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Wed, 12 Aug 2026 23:01:48 +0200
Subject: [PATCH] Make interactive tests work on SDL3 built with disabled param
checking (or assert on invalid)
---
examples/asyncio/01-load-bitmaps/load-bitmaps.c | 4 +++-
examples/demo/04-bytepusher/bytepusher.c | 6 +++---
examples/renderer/17-read-pixels/read-pixels.c | 4 +++-
test/testffmpeg.c | 10 +++++++---
test/testintersections.c | 6 +++++-
test/testmodal.c | 2 +-
test/testrotate.c | 4 +++-
test/testyuv.c | 12 +++++++-----
8 files changed, 32 insertions(+), 16 deletions(-)
diff --git a/examples/asyncio/01-load-bitmaps/load-bitmaps.c b/examples/asyncio/01-load-bitmaps/load-bitmaps.c
index aebb96eb068d8..eba69230edbdc 100644
--- a/examples/asyncio/01-load-bitmaps/load-bitmaps.c
+++ b/examples/asyncio/01-load-bitmaps/load-bitmaps.c
@@ -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);
diff --git a/examples/demo/04-bytepusher/bytepusher.c b/examples/demo/04-bytepusher/bytepusher.c
index e1661b50181e2..ce7b5f194fe4d 100644
--- a/examples/demo/04-bytepusher/bytepusher.c
+++ b/examples/demo/04-bytepusher/bytepusher.c
@@ -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 {
diff --git a/examples/renderer/17-read-pixels/read-pixels.c b/examples/renderer/17-read-pixels/read-pixels.c
index 3775069e0f1da..040b6ac86cfc2 100644
--- a/examples/renderer/17-read-pixels/read-pixels.c
+++ b/examples/renderer/17-read-pixels/read-pixels.c
@@ -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());
diff --git a/test/testffmpeg.c b/test/testffmpeg.c
index da1420e14ae24..10931a6366865 100644
--- a/test/testffmpeg.c
+++ b/test/testffmpeg.c
@@ -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 @@ int main(int argc, char *argv[])
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;
diff --git a/test/testintersections.c b/test/testintersections.c
index cb9fed75497ca..967d82aa22e49 100644
--- a/test/testintersections.c
+++ b/test/testintersections.c
@@ -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;
diff --git a/test/testmodal.c b/test/testmodal.c
index 3c10a00866b81..9dad19f6595d4 100644
--- a/test/testmodal.c
+++ b/test/testmodal.c
@@ -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;
diff --git a/test/testrotate.c b/test/testrotate.c
index 9dfb16c9166d1..85851809fa8b2 100644
--- a/test/testrotate.c
+++ b/test/testrotate.c
@@ -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) {
diff --git a/test/testyuv.c b/test/testyuv.c
index 3cc5af8daa3fe..9c2ba97aaa091 100644
--- a/test/testyuv.c
+++ b/test/testyuv.c
@@ -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;