From f5b01b1d91ac45cd0b86bfa68e9c097196dfeabf Mon Sep 17 00:00:00 2001
From: Sam Lantinga <slouken@libsdl.org>
Date: Mon, 15 Nov 2004 21:09:54 +0000
Subject: [PATCH] Restore the user specified window proc after shutdown

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40975
---
 src/video/windib/SDL_dibevents.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/video/windib/SDL_dibevents.c b/src/video/windib/SDL_dibevents.c
index b86481ef..f03ed274 100644
--- a/src/video/windib/SDL_dibevents.c
+++ b/src/video/windib/SDL_dibevents.c
@@ -369,13 +369,16 @@ int DIB_CreateWindow(_THIS)
 	if ( SDL_windowid ) {
 		SDL_Window = (HWND)strtol(SDL_windowid, NULL, 0);
 
-      /* DJM: we want all event's for the user specified
-         window to be handled by SDL.
-       */
-      if (SDL_Window) {
-         userWindowProc = (WNDPROC)GetWindowLong(SDL_Window, GWL_WNDPROC);
-         SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)WinMessage);
-      }
+		if ( SDL_Window == NULL ) {
+			SDL_SetError("Couldn't get user specified window");
+			return(-1);
+		}
+
+		/* DJM: we want all event's for the user specified
+			window to be handled by SDL.
+		 */
+		userWindowProc = (WNDPROC)GetWindowLong(SDL_Window, GWL_WNDPROC);
+		SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)WinMessage);
 	} else {
 		SDL_Window = CreateWindow(SDL_Appname, SDL_Appname,
                         (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX),
@@ -391,7 +394,9 @@ int DIB_CreateWindow(_THIS)
 
 void DIB_DestroyWindow(_THIS)
 {
-	if ( SDL_windowid == NULL ) {
+	if ( SDL_windowid ) {
+		SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)userWindowProc);
+	} else {
 		DestroyWindow(SDL_Window);
 	}
 }
-- 
2.18.1