sdl12-compat: Revert "syswm: Added a magic hack so apps can access actual SDL2 SysWM information."

From 38717f024ff828525a5a33bca7230796b34598c2 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Thu, 8 Sep 2022 13:19:32 -0400
Subject: [PATCH] Revert "syswm: Added a magic hack so apps can access actual
 SDL2 SysWM information."

This reverts commit b13166f31a1d1b315744e6cc45901173d99590c7.
---
 CMakeLists.txt          |   1 -
 include/SDL/SDL_syswm.h |  16 -----
 src/SDL12_compat.c      | 128 +---------------------------------------
 test/README             |   1 -
 test/testsyswm2on12.c   | 113 -----------------------------------
 5 files changed, 1 insertion(+), 258 deletions(-)
 delete mode 100644 test/testsyswm2on12.c

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 41c72e992..3c506c13c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -218,7 +218,6 @@ if(SDL12TESTS)
     test_program(torturethread "test/torturethread.c")
     test_program(testdyngl "test/testdyngl.c")
     test_program(testgl "test/testgl.c")
-    test_program(testsyswm2on12 "test/testsyswm2on12.c")
     if(OPENGL_FOUND)
       if(CMAKE_VERSION VERSION_LESS 3.10 OR NOT OPENGL_opengl_LIBRARY)
         target_link_libraries(testgl ${OPENGL_gl_LIBRARY})
diff --git a/include/SDL/SDL_syswm.h b/include/SDL/SDL_syswm.h
index 2add7d9b7..007618d10 100644
--- a/include/SDL/SDL_syswm.h
+++ b/include/SDL/SDL_syswm.h
@@ -120,22 +120,6 @@ real SDL-1.2 available to you. */
 
 #include "begin_code.h"
 
-/* SPECIAL CASE FOR SDL12-COMPAT: if version.major == 2, we'll fill in this struct with the native window handle. */
-/* This is not part of the real 1.2 API! */
-typedef struct SDL_SysWMinfo2on12
-{
-    SDL_version version;
-    Uint32 subsystem;
-    void *data1;
-    void *data2;
-    void *data3;
-    void *data4;
-    void *data5;
-    void *data6;
-    void *data7;
-    void *data8;
-} SDL_SysWMinfo2on12;
-
 extern DECLSPEC int SDLCALL SDL_GetWMInfo(SDL_SysWMinfo *info);
 
 #include "close_code.h"
diff --git a/src/SDL12_compat.c b/src/SDL12_compat.c
index 863b95b24..9c0d81543 100644
--- a/src/SDL12_compat.c
+++ b/src/SDL12_compat.c
@@ -636,23 +636,6 @@ typedef struct SDL12_SysWMinfo
 #endif
 } SDL12_SysWMinfo;
 
-/* SPECIAL CASE FOR SDL12-COMPAT: if version.major == 2, we'll fill in this struct with the native window handle. */
-/* This is not part of the real 1.2 API! */
-typedef struct SDL12_SysWMinfo2on12
-{
-    SDL_version version;
-    Uint32 subsystem;
-    void *data1;
-    void *data2;
-    void *data3;
-    void *data4;
-    void *data5;
-    void *data6;
-    void *data7;
-    void *data8;
-} SDL12_SysWMinfo2on12;
-
-
 typedef enum
 {
     SDL12_NOEVENT = 0,
@@ -6995,10 +6978,9 @@ SDL_GetWMInfo(SDL12_SysWMinfo *info12)
     SDL_SysWMinfo info20;
     SDL_bool temp_window = SDL_FALSE;
     SDL_Window *win20 = VideoWindow20;
-    const int do_2on12 = ((info12->version.major == 2) && (info12->version.minor == 0) && (info12->version.major == 2) && (info12->version.patch == 0));
     int rc;
 
-    if ((info12->version.major > 1) && !do_2on12) {
+    if (info12->version.major > 1) {
         SDL20_SetError("Requested version is unsupported");
         return 0;  /* some programs only test against 0, not -1 */
     } else if (!SupportSysWM) {
@@ -7038,114 +7020,6 @@ SDL_GetWMInfo(SDL12_SysWMinfo *info12)
         return 0;  /* some programs only test against 0, not -1 */
     }
 
-    /* SPECIAL CASE FOR SDL12-COMPAT: if version.major == 2, we'll fill in this struct with the native window handle. */
-    if (do_2on12) {
-        SDL12_SysWMinfo2on12 *wminfo2 = (SDL12_SysWMinfo2on12 *) info12;
-        SDL_zerop(wminfo2);
-        SDL20_memcpy(&wminfo2->version, &info20.version, sizeof (wminfo2->version));
-        wminfo2->subsystem = (Uint32) info20.subsystem;  /* these do not map to SDL 1.2 values! You're on your own! */
-
-        switch (info20.subsystem) {
-            #if defined(SDL_VIDEO_DRIVER_WINDOWS)
-            case SDL_SYSWM_WINDOWS:
-                wminfo2->data1 = (void *) info20.info.win.window;
-                wminfo2->data2 = (void *) info20.info.win.hdc;
-                wminfo2->data3 = (void *) info20.info.win.hinstance;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_WINRT)
-            case SDL_SYSWM_WINRT:
-                wminfo2->data1 = (void *) info20.info.winrt.window;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_X11)
-            case SDL_SYSWM_X11:
-                wminfo2->data1 = (void *) info20.info.x11.display;
-                wminfo2->data2 = (void *) info20.info.x11.window;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-            case SDL_SYSWM_DIRECTFB:
-                wminfo2->data1 = (void *) info20.info.dfb.dfb;
-                wminfo2->data2 = (void *) info20.info.dfb.window;
-                wminfo2->data3 = (void *) info20.info.dfb.surface;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_COCOA)
-            case SDL_SYSWM_COCOA:
-                wminfo2->data1 = (void *) info20.info.cocoa.window;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_UIKIT)
-            case SDL_SYSWM_UIKIT:
-                wminfo2->data1 = (void *) info20.info.uikit.window;
-                wminfo2->data2 = (void *) info20.info.uikit.framebuffer;
-                wminfo2->data3 = (void *) info20.info.uikit.colorbuffer;
-                wminfo2->data4 = (void *) info20.info.uikit.resolveFramebuffer;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_WAYLAND)
-            case SDL_SYSWM_WAYLAND:
-                wminfo2->data1 = (void *) info20.info.wl.display;
-                wminfo2->data2 = (void *) info20.info.wl.surface;
-                wminfo2->data3 = (void *) info20.info.wl.shell_surface;
-                wminfo2->data4 = (void *) info20.info.wl.egl_window;
-                wminfo2->data5 = (void *) info20.info.wl.xdg_surface;
-                wminfo2->data6 = (void *) info20.info.wl.xdg_toplevel;
-                wminfo2->data7 = (void *) info20.info.wl.xdg_popup;
-                wminfo2->data8 = (void *) info20.info.wl.xdg_positioner;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_MIR)  /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
-            case SDL_SYSWM_MIR:
-                wminfo2->data1 = (void *) info20.info.mir.connection;
-                wminfo2->data2 = (void *) info20.info.mir.surface;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_ANDROID)
-            case SDL_SYSWM_ANDROID:
-                wminfo2->data1 = (void *) info20.info.android.window;
-                wminfo2->data2 = (void *) info20.info.android.surface;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_OS2)
-            case SDL_SYSWM_OS2:
-                wminfo2->data1 = (void *) info20.info.os2.hwnd;
-                wminfo2->data2 = (void *) info20.info.os2.hwndFrame;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_VIVANTE)
-            case SDL_SYSWM_VIVANTE:
-                wminfo2->data1 = (void *) info20.info.vivante.display;
-                wminfo2->data2 = (void *) info20.info.vivante.window;
-                break;
-            #endif
-
-            #if defined(SDL_VIDEO_DRIVER_KMSDRM)
-            case SDL_SYSWM_KMSDRM:
-                wminfo2->data1 = (void *) (size_t) info20.info.kmsdrm.dev_index;
-                wminfo2->data2 = (void *) (size_t) info20.info.kmsdrm.drm_fd;
-                wminfo2->data3 = (void *) (size_t) info20.info.kmsdrm.gbm_dev;
-                break;
-            #endif
-
-            default:
-                return 0;
-        }
-
-        return 1;
-    }
-
 #if defined(SDL_VIDEO_DRIVER_WINDOWS)
     SDL_assert(info20.subsystem == SDL_SYSWM_WINDOWS);
     info12->window = temp_window ? 0 : info20.info.win.window;
diff --git a/test/README b/test/README
index a77450a7b..e158b4e42 100644
--- a/test/README
+++ b/test/README
@@ -33,4 +33,3 @@ These are test programs for the SDL library:
 	testwm		Test window manager -- title, icon, events
 	threadwin	Test multi-threaded event handling
 	torturethread	Simple test for thread creation/destruction
-	testsyswm2on12	Simple test for SDL_SysWM2on12 compatibility magic.
\ No newline at end of file
diff --git a/test/testsyswm2on12.c b/test/testsyswm2on12.c
deleted file mode 100644
index 73b000df8..000000000
--- a/test/testsyswm2on12.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* this isn't a classic SDL 1.2 test program, this tests a little
-   compatibility magic that only exists in sdl12-compat. */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "SDL.h"
-#include "SDL_syswm.h"
-
-/* so this will compile with classic 1.2 headers... */
-#ifndef SDL12_COMPAT_HEADERS
-#include "begin_code.h"
-typedef struct SDL_SysWMinfo2on12
-{
-    SDL_version version;
-    Uint32 subsystem;
-    void *data1;
-    void *data2;
-    void *data3;
-    void *data4;
-    void *data5;
-    void *data6;
-    void *data7;
-    void *data8;
-} SDL_SysWMinfo2on12;
-#include "end_code.h"
-#endif
-
-typedef enum
-{
-    SDL20_SYSWM_UNKNOWN,
-    SDL20_SYSWM_WINDOWS,
-    SDL20_SYSWM_X11,
-    SDL20_SYSWM_DIRECTFB,
-    SDL20_SYSWM_COCOA,
-    SDL20_SYSWM_UIKIT,
-    SDL20_SYSWM_WAYLAND,
-    SDL20_SYSWM_MIR,
-    SDL20_SYSWM_WINRT,
-    SDL20_SYSWM_ANDROID,
-    SDL20_SYSWM_VIVANTE,
-    SDL20_SYSWM_OS2,
-    SDL20_SYSWM_HAIKU,
-    SDL20_SYSWM_KMSDRM,
-    SDL20_SYSWM_RISCOS
-} SDL20_SYSWM_TYPE;
-
-static const char *
-subsystem_name(const Uint32 typ)
-{
-    static char unrecognized[64];
-    switch ((SDL20_SYSWM_TYPE) typ) {
-        case SDL20_SYSWM_UNKNOWN: return "Unknown";
-        case SDL20_SYSWM_WINDOWS: return "Windows";
-        case SDL20_SYSWM_X11: return "X11";
-        case SDL20_SYSWM_DIRECTFB: return "DirectFB";
-        case SDL20_SYSWM_COCOA: return "Cocoa";
-        case SDL20_SYSWM_UIKIT: return "UIKit";
-        case SDL20_SYSWM_WAYLAND: return "Wayland";
-        case SDL20_SYSWM_MIR: return "Mir";
-        case SDL20_SYSWM_WINRT: return "WinRT";
-        case SDL20_SYSWM_ANDROID: return "Android";
-        case SDL20_SYSWM_VIVANTE: return "Vivante";
-        case SDL20_SYSWM_OS2: return "OS/2";
-        case SDL20_SYSWM_HAIKU: return "Haiku";
-        case SDL20_SYSWM_KMSDRM: return "KMSDRM";
-        case SDL20_SYSWM_RISCOS: return "RiscOS";
-        default: break;
-    }
-
-    snprintf(unrecognized, sizeof (unrecognized), "Unrecognized (%d)", (int) typ);
-    return unrecognized;
-}
-
-int main(int argc, char **argv)
-{
-    SDL_SysWMinfo2on12 syswm_info;
-
-	if (SDL_Init(SDL_INIT_VIDEO) < 0) {
-		fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
-		return 1;
-	}
-
-    if (SDL_SetVideoMode(640, 480, 32, 0) == NULL) {
-		fprintf(stderr, "Couldn't create an SDL window: %s\n", SDL_GetError());
-        SDL_Quit();
-		return 1;
-	}
-
-    SDL_memset(&syswm_info, '\0', sizeof (syswm_info));
-    syswm_info.version.major = 2;  /* this triggers magic in sdl12-compat */
-
-    /* obviously this should fail with classic SDL 1.2. */
-	if (SDL_GetWMInfo((SDL_SysWMinfo *) &syswm_info) != 1) {
-	    fprintf(stderr, "Failed to get syswm 2on12 info: %s\n", SDL_GetError());
-	} else {
-        printf("SysWM2on12 info:\n");
-        printf("Version: %d.%d.%d\n", syswm_info.version.major, syswm_info.version.minor, syswm_info.version.patch);
-        printf("Subsystem: %s\n", subsystem_name(syswm_info.subsystem));
-        printf("data1: %p\n", syswm_info.data1);
-        printf("data2: %p\n", syswm_info.data2);
-        printf("data3: %p\n", syswm_info.data3);
-        printf("data4: %p\n", syswm_info.data4);
-        printf("data5: %p\n", syswm_info.data5);
-        printf("data6: %p\n", syswm_info.data6);
-        printf("data7: %p\n", syswm_info.data7);
-        printf("data8: %p\n", syswm_info.data8);
-    }
-
-    SDL_Quit();
-    return 0;
-}
-