From afeeef9cf5638d65ebea019f87c77a8c3977a8b5 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sun, 2 Nov 2025 07:18:49 -0800
Subject: [PATCH] Use DefWindowProc for the initial SDL window proc
This makes sure that anything that hooks window creation to set up window proc hooks will call DefWindowProc instead of infinitely recursing when we set up our window proc afterwards.
Fixes https://github.com/libsdl-org/SDL/issues/10529
(cherry picked from commit 6c4f2bd83d1942ee98c7424a0b627ca518c98feb)
---
src/video/windows/SDL_windowsevents.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c
index 559c1217185b9..bb45f122b16c3 100644
--- a/src/video/windows/SDL_windowsevents.c
+++ b/src/video/windows/SDL_windowsevents.c
@@ -2056,18 +2056,12 @@ int SDL_RegisterApp(const char *name, Uint32 style, void *hInst)
SDL_Instance = hInst ? hInst : GetModuleHandle(NULL);
/* Register the application class */
+ SDL_zero(wcex);
wcex.cbSize = sizeof(WNDCLASSEX);
- wcex.hCursor = NULL;
- wcex.hIcon = NULL;
- wcex.hIconSm = NULL;
- wcex.lpszMenuName = NULL;
wcex.lpszClassName = SDL_Appname;
wcex.style = SDL_Appstyle;
- wcex.hbrBackground = NULL;
- wcex.lpfnWndProc = WIN_WindowProc;
+ wcex.lpfnWndProc = DefWindowProc;
wcex.hInstance = SDL_Instance;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
hint = SDL_GetHint(SDL_HINT_WINDOWS_INTRESOURCE_ICON);