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