diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp index 53ee98cb5..062b51b4e 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp @@ -718,15 +718,12 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re if (!setupDisplay()) return false; - if (_DestroyWindow) - { - // setup window size and screen mode - if (!setMode(mode)) - return false; + // setup window size and screen mode + if (!setMode(mode)) + return false; - if (show || _FullScreen) - showWindow(true); - } + if (show || _FullScreen) + showWindow(true); return true; } @@ -971,7 +968,7 @@ bool CDriverGL::destroyWindow() if (_hDC) wglMakeCurrent(_hDC, NULL); - if (_hRC) + if (_DestroyWindow && _hRC) { wglDeleteContext(_hRC); _hRC = NULL; @@ -993,14 +990,16 @@ bool CDriverGL::destroyWindow() #elif defined (NL_OS_UNIX) - if (_ctx) + if (_DestroyWindow) { - glXDestroyContext(_dpy, _ctx); - _ctx = NULL; + if (_ctx) + glXDestroyContext(_dpy, _ctx); + + if (_win) + XDestroyWindow(_dpy, _win); } - if (_win && _DestroyWindow) - XDestroyWindow(_dpy, _win); + _ctx = NULL; // Ungrab the keyboard (probably not necessary); // XUnmapWindow(_dpy, _win); @@ -1028,6 +1027,10 @@ bool CDriverGL::setWindowStyle(EWindowStyle windowStyle) { H_AUTO_OGL(CDriverGL_setWindowStyle) + // don't change window style, if we did not create the window + if (!_DestroyWindow) + return true; + #if defined(NL_OS_WINDOWS) // get current style @@ -1329,6 +1332,12 @@ void CDriverGL::setWindowPos(sint32 x, sint32 y) // *************************************************************************** void CDriverGL::showWindow(bool show) { + H_AUTO_OGL(CDriverGL_showWindow) + + // don't change window visibility, if we didn't create the window + if (!_DestroyWindow) + return; + #ifdef NL_OS_WINDOWS ShowWindow (_win, show ? SW_SHOW:SW_HIDE); #elif defined(NL_OS_MAC) && defined(NL_MAC_NATIVE) @@ -1354,6 +1363,7 @@ void CDriverGL::showWindow(bool show) emptyProc CDriverGL::getWindowProc() { H_AUTO_OGL(CDriverGL_getWindowProc) + #ifdef NL_OS_WINDOWS return (emptyProc)GlWndProc; #else // NL_OS_WINDOWS