Switching from Automatic to Manual redirect needs to unmap/remap
When changing a window from automatic redirection to manual redirection, the parent clip list needs to be recomputed; the easy way to get that computed right is to unmap/map the window, just as when redirecting the window the first time. Thanks to Owen Taylor for helping diagnose this. Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
8bfd88ca61
commit
d26083fe02
|
@ -148,6 +148,16 @@ compRedirectWindow (ClientPtr pClient, WindowPtr pWin, int update)
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
if (ccw->update == CompositeRedirectManual)
|
if (ccw->update == CompositeRedirectManual)
|
||||||
{
|
{
|
||||||
|
/* If the window was CompositeRedirectAutomatic, then
|
||||||
|
* unmap the window so that the parent clip list will
|
||||||
|
* be correctly recomputed.
|
||||||
|
*/
|
||||||
|
if (pWin->mapped)
|
||||||
|
{
|
||||||
|
DisableMapUnmapEvents (pWin);
|
||||||
|
UnmapWindow (pWin, FALSE);
|
||||||
|
EnableMapUnmapEvents (pWin);
|
||||||
|
}
|
||||||
if (cw->damageRegistered)
|
if (cw->damageRegistered)
|
||||||
{
|
{
|
||||||
DamageUnregister (&pWin->drawable, cw->damage);
|
DamageUnregister (&pWin->drawable, cw->damage);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user