From: rambetter Date: Sat, 22 Jan 2011 03:22:21 +0000 (+0000) Subject: Turn off desktop compositing in Windows ("Aero") for Radiant. X-Git-Tag: xonotic-v0.7.0~16^2~12^2~7 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=commitdiff_plain;h=1f11459c84ce689913dca9358d4cfc326c9ad368 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: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@433 8a3a26a2-13c4-0310-b231-cf6edde360e5 --- 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: