SDL: testdrawchessboard: Allow using the standard render API (2bef8)

From 2bef8852fbf52fe0d7cd1571f8af75689031fa5c Mon Sep 17 00:00:00 2001
From: Cameron Cawley <[EMAIL REDACTED]>
Date: Wed, 1 May 2024 22:12:08 +0100
Subject: [PATCH] testdrawchessboard: Allow using the standard render API

---
 test/testdrawchessboard.c | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/test/testdrawchessboard.c b/test/testdrawchessboard.c
index c6a33548bf4c6..06429a265bd68 100644
--- a/test/testdrawchessboard.c
+++ b/test/testdrawchessboard.c
@@ -12,7 +12,10 @@
    This file is created by : Nitin Jain (nitin.j4\samsung.com)
 */
 
-/* Sample program:  Draw a Chess Board  by using SDL_CreateSoftwareRenderer API */
+/* Sample program:  Draw a Chess Board  by using the SDL render API */
+
+/* This allows testing SDL_CreateSoftwareRenderer with the window surface API. Undefine it to use the accelerated renderer instead. */
+#define USE_SOFTWARE_RENDERER
 
 #include <SDL3/SDL.h>
 #include <SDL3/SDL_main.h>
@@ -24,9 +27,11 @@
 
 static SDL_Window *window;
 static SDL_Renderer *renderer;
-static SDL_Surface *surface;
 static int done;
 
+#ifdef USE_SOFTWARE_RENDERER
+static SDL_Surface *surface;
+#endif
 
 static void DrawChessBoard(void)
 {
@@ -57,7 +62,6 @@ static void DrawChessBoard(void)
             }
         }
     }
-    SDL_RenderPresent(renderer);
 }
 
 static void loop(void)
@@ -65,6 +69,7 @@ static void loop(void)
     SDL_Event e;
     while (SDL_PollEvent(&e)) {
 
+#ifdef USE_SOFTWARE_RENDERER
         /* Re-create when window surface has been resized */
         if (e.type == SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED) {
 
@@ -76,6 +81,7 @@ static void loop(void)
             SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
             SDL_RenderClear(renderer);
         }
+#endif
 
         if (e.type == SDL_EVENT_QUIT) {
             done = 1;
@@ -94,11 +100,19 @@ static void loop(void)
         }
     }
 
+    /* Clear the rendering surface with the specified color */
+    SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
+    SDL_RenderClear(renderer);
+
     DrawChessBoard();
 
+    SDL_RenderPresent(renderer);
+
+#ifdef USE_SOFTWARE_RENDERER
     /* Got everything on rendering surface,
        now Update the drawing image on window screen */
     SDL_UpdateWindowSurface(window);
+#endif
 }
 
 int main(int argc, char *argv[])
@@ -128,17 +142,17 @@ int main(int argc, char *argv[])
         SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Window creation fail : %s\n", SDL_GetError());
         return 1;
     }
+#ifdef USE_SOFTWARE_RENDERER
     surface = SDL_GetWindowSurface(window);
     renderer = SDL_CreateSoftwareRenderer(surface);
+#else
+    renderer = SDL_CreateRenderer(window, NULL);
+#endif
     if (!renderer) {
         SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Render creation for surface fail : %s\n", SDL_GetError());
         return 1;
     }
 
-    /* Clear the rendering surface with the specified color */
-    SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
-    SDL_RenderClear(renderer);
-
     /* Draw the Image on rendering surface */
     done = 0;
 #ifdef SDL_PLATFORM_EMSCRIPTEN