Date: Sat, 21 Mar 2009 19:41:52 -0700 (PDT)
authorSam Lantinga <slouken@libsdl.org>
Mon, 23 Mar 2009 02:02:30 +0000
changeset 3095 75483112b97f
parent 3094 c0ce3380742d
child 3096 ae4e80dbe330
Date: Sat, 21 Mar 2009 19:41:52 -0700 (PDT) From: Mason Wheeler Subject: [SDL] Critical SDL 1.3 patch Displaying a window created with SDL_CreateWindowFrom was causing stack overf lows for me under certain conditions. After far too much work trying to get Visual Studio's debugger to play nice with a program written in Delphi, I tra cked it down to a nasty reentrancy cycle in the WndProc handling. Here's a p atch that fixes the problem
src/video/win32/SDL_win32events.c
--- a/src/video/win32/SDL_win32events.c	Sun Mar 22 06:56:37 2009 +0000
+++ b/src/video/win32/SDL_win32events.c	Mon Mar 23 02:02:30 2009 +0000
@@ -570,6 +570,17 @@
         }
         return (0);
 
+        /* If this isn't our window, we don't need to repaint the frame.
+           This fixes a reentrancy issue that can cause stack overflows with foreign windows.
+           3/21/09 Mason Wheeler */
+    case WM_NCPAINT:
+        {
+            if (SDL_GetWindowFlags(data->windowID) && SDL_WINDOW_FOREIGN) {
+                return(0);
+            }
+            break;
+        }
+
         /* We'll do our own drawing, prevent flicker */
     case WM_ERASEBKGND:
         {