From df061f7435ff6ee0ac90e14dbbba864930bc5c2f Mon Sep 17 00:00:00 2001 From: rambetter Date: Sat, 22 Jan 2011 03:22:21 +0000 Subject: [PATCH] Turn off desktop compositing in Windows ("Aero") for Radiant. Otherwise, "hall of mirrors" effect takes place in the OpenGL viewports. This fix is a real hack. It's actually borrowed from other Radiants such as NetRadiant. I'd like to fix the underlying issue someday so that Aero can be used with Radiant. git-svn-id: https://zerowing.idsoftware.com/svn/radiant/GtkRadiant/trunk@433 8a3a26a2-13c4-0310-b231-cf6edde360e5 --- radiant/main.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/radiant/main.cpp b/radiant/main.cpp index 7e004003..f1d3a0a5 100644 --- a/radiant/main.cpp +++ b/radiant/main.cpp @@ -429,6 +429,33 @@ int main( int argc, char* argv[] ) { char *libgl, *ptr; int i, j, k; + /* + Rambetter on Fri Jan 21, 2011: + + People with recent NVIDIA cards and Windows 7 (Aero) are complaining about "hall of mirrors" + effect in the OpenGL viewports. The code below is borrowed from NetRadiant to address + this issue. This change turns off desktop compositing (globally) while Radiant is running. + It's a real hack but the "correct" fix is very involving, so until the underlying problem + is addressed we need this code here. I don't know for sure what the underlying problem is, + but I have a hunch it's the version of gtkglext.dll we're using. + */ + +#ifdef _WIN32 + HMODULE lib; + lib = LoadLibrary("dwmapi.dll"); + if (lib != 0) + { + void (WINAPI *qDwmEnableComposition) (bool bEnable) = + (void (WINAPI *) (bool bEnable)) GetProcAddress(lib, "DwmEnableComposition"); + if (qDwmEnableComposition) + { + qDwmEnableComposition(FALSE); + } + FreeLibrary(lib); + } +#endif + + /* Rambetter on Sat Nov 13, 2010: -- 2.39.2