diff --git a/src/video/windib/SDL_dibevents.c b/src/video/windib/SDL_dibevents.c index f03ed27467289450e8ac9b969230fa248386b646..71b1a442a239bd66edb00ad65735db17559c1a7a 100644 --- a/src/video/windib/SDL_dibevents.c +++ b/src/video/windib/SDL_dibevents.c @@ -368,7 +368,6 @@ int DIB_CreateWindow(_THIS) SDL_RegisterApp("SDL_app", CS_BYTEALIGNCLIENT, 0); if ( SDL_windowid ) { SDL_Window = (HWND)strtol(SDL_windowid, NULL, 0); - if ( SDL_Window == NULL ) { SDL_SetError("Couldn't get user specified window"); return(-1); diff --git a/src/video/windx5/SDL_dx5events.c b/src/video/windx5/SDL_dx5events.c index bf96b9437c59e2205c178153d587b2c62b581d5d..d906fe49d3de676918bed5600bee1a08f3d54e38 100644 --- a/src/video/windx5/SDL_dx5events.c +++ b/src/video/windx5/SDL_dx5events.c @@ -849,14 +849,16 @@ int DX5_CreateWindow(_THIS) SDL_RegisterApp("SDL_app", CS_BYTEALIGNCLIENT, 0); if ( SDL_windowid ) { SDL_Window = (HWND)strtol(SDL_windowid, NULL, 0); + 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. + window to be handled by SDL. */ - if (SDL_Window) { - userWindowProc = (WNDPROC)GetWindowLong(SDL_Window, GWL_WNDPROC); - SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)WinMessage); - } + 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), @@ -883,5 +885,9 @@ void DX5_DestroyWindow(_THIS) DX5_DInputQuit(this); /* Destroy our window */ - DestroyWindow(SDL_Window); + if ( SDL_windowid ) { + SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)userWindowProc); + } else { + DestroyWindow(SDL_Window); + } }