This patch was made from this commit<http://gitweb.compiz-fusion.org/?p=fusion/plugins/workarounds;a=commit;h=46960f12a9d213e5f0e841557e2ed2f7ea18cc79>to compiz. Patch is for package compiz-fusion-plugins-main 0.7.6-1 (from Sid).
Comments from commit: > Add workaround to force X-to-GLX synchronization, which should help for > the race condition in the XDamage protocol Nvidia users are suffering > from. This is my first patch, so maybe something is wrong..
diff -ruN a/metadata/workarounds.xml.in b/metadata/workarounds.xml.in --- a/metadata/workarounds.xml.in 2008-06-03 05:51:24.000000000 +0700 +++ b/metadata/workarounds.xml.in 2009-03-16 14:19:52.000000000 +0600 @@ -48,6 +48,11 @@ <_long>Fix for broken GLX_MESA_copy_sub_buffer on XGL in fglrx.</_long> <default>false</default> </option> + <option type="bool" name="force_glx_sync"> + <_short>Force synchronization between X and GLX</_short> + <_long>Force synchronization between X and GLX, which may help for window parts not redrawing correctly when using Nvidia drivers, but also may decrease performance.</_long> + <default>false</default> + </option> <subgroup> <_short>Window stickyness</_short> <option type="bool" name="sticky_alldesktops"> diff -ruN a/src/workarounds/workarounds.c b/src/workarounds/workarounds.c --- a/src/workarounds/workarounds.c 2008-06-03 05:51:24.000000000 +0700 +++ b/src/workarounds/workarounds.c 2009-03-16 14:18:46.000000000 +0600 @@ -197,6 +197,9 @@ currentScreen = s; + if (workaroundsGetForceGlxSync (s->display)) + glXWaitX(); + UNWRAP (ws, s, paintScreen); (*s->paintScreen) (s, outputs, numOutputs, mask); WRAP (ws, s, paintScreen, workaroundsPaintScreen);