sdl2-compat: render: Don't check for compatible flags with a specified render driver

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) {