diff options
| -rw-r--r-- | indra/llwindow/llwindowwin32.cpp | 26 | 
1 files changed, 17 insertions, 9 deletions
| diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 180954f715..bef0ae76a8 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -829,16 +829,24 @@ void LLWindowWin32::close()  	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL; -	// Make sure we don't leave a blank toolbar button. -	ShowWindow(mWindowHandle, SW_HIDE); +    if (IsWindow(mWindowHandle)) +    { +        // Make sure we don't leave a blank toolbar button. +        ShowWindow(mWindowHandle, SW_HIDE); -	// This causes WM_DESTROY to be sent *immediately* -	if (!destroy_window_handler(mWindowHandle)) -	{ -		OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"), -			mCallbacks->translateString("MBShutdownErr"), -			OSMB_OK); -	} +        // This causes WM_DESTROY to be sent *immediately* +        if (!destroy_window_handler(mWindowHandle)) +        { +            OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"), +                mCallbacks->translateString("MBShutdownErr"), +                OSMB_OK); +        } +    } +    else +    { +        // Something killed the window while we were busy destroying gl or handle somehow got broken +        LL_WARNS("Window") << "Failed to destroy Window, invalid handle!" << LL_ENDL; +    }  	mWindowHandle = NULL;  } | 
