From 11d60b657252bdb3b0ae6d5b428a7c44f1e6f128 Mon Sep 17 00:00:00 2001
From: Cameron Gutman <[EMAIL REDACTED]>
Date: Sun, 16 Mar 2025 13:05:24 -0500
Subject: [PATCH] render: Don't check for compatible flags with a specified
render driver
SDL2 doesn't use the flags at all for render driver selection in this case.
Fixes #414
---
src/sdl2_compat.c | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index f2105eb..7956ba4 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -5535,6 +5535,11 @@ SDL_CreateRenderer(SDL_Window *window, int idx, Uint32 flags)
SDL3_SetHint(SDL_HINT_RENDER_DRIVER, NULL);
}
}
+
+ /* A valid render driver specified by idx or hint takes precedence over flags */
+ if (!name && (flags & SDL2_RENDERER_SOFTWARE)) {
+ name = SDL_SOFTWARE_RENDERER;
+ }
} else {
name = SDL3_GetRenderDriver(idx);
if (!name) {
@@ -5542,21 +5547,6 @@ SDL_CreateRenderer(SDL_Window *window, int idx, Uint32 flags)
}
}
- if (flags & SDL2_RENDERER_ACCELERATED) {
- if (name && SDL3_strcmp(name, SDL_SOFTWARE_RENDERER) == 0) {
- SDL3_SetError("Couldn't find matching render driver");
- return NULL;
- }
- }
-
- if (flags & SDL2_RENDERER_SOFTWARE) {
- if (name && SDL3_strcmp(name, SDL_SOFTWARE_RENDERER) != 0) {
- SDL3_SetError("Couldn't find matching render driver");
- return NULL;
- }
- name = SDL_SOFTWARE_RENDERER;
- }
-
renderer = SDL3_CreateRenderer(window, name);
props = SDL3_GetRendererProperties(renderer);
if (props) {