From 226cd5ccd0f86cc1f2741e686fcf8e4846acf867 Mon Sep 17 00:00:00 2001 From: Diederick Niehorster Date: Mon, 26 Mar 2018 20:24:31 +0000 Subject: [PATCH] fix that stereo shutter glasses for nVidia setups did not engage. We lose the ability to have child windows as the WS_POPUP style doesn't play nice with them, but thats a small price to pay as we estimate them to be rare for stereo displays. Thanks Markus Israelsson git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1839 7f0cb862-5218-0410-a997-914c9d46530a --- src/mswin/fg_main_mswin.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mswin/fg_main_mswin.c b/src/mswin/fg_main_mswin.c index 8ad8308..6d286e7 100644 --- a/src/mswin/fg_main_mswin.c +++ b/src/mswin/fg_main_mswin.c @@ -1626,6 +1626,7 @@ void fgPlatformPosResZordWork(SFG_Window* window, unsigned int workMask) RECT rect; HMONITOR hMonitor; MONITORINFO mi; + DWORD newStyle; /* save current window rect, style, exstyle and maximized state */ window->State.pWState.OldMaximized = !!IsZoomed(window->Window.Handle); @@ -1641,8 +1642,14 @@ void fgPlatformPosResZordWork(SFG_Window* window, unsigned int workMask) window->State.pWState.OldStyleEx = GetWindowLong(window->Window.Handle, GWL_EXSTYLE); /* remove decorations from style */ - SetWindowLong(window->Window.Handle, GWL_STYLE, - window->State.pWState.OldStyle & ~(WS_CAPTION | WS_THICKFRAME)); + newStyle = window->State.pWState.OldStyle & ~(WS_CAPTION | WS_THICKFRAME); + if (fgState.DisplayMode & GLUT_STEREO) + { + /* stereo mode does not engage on nVidia stereo buffers. This kills child + windows, but we make the guess that those are rare for stereo windows. */ + newStyle |= WS_POPUP; + } + SetWindowLong(window->Window.Handle, GWL_STYLE, newStyle); SetWindowLong(window->Window.Handle, GWL_EXSTYLE, window->State.pWState.OldStyleEx & ~(WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE)); -- 1.7.10.4