[comp.windows.x] Synchronization after destroying windows

hoenig@popper.informatik.uni-kl.de (Helmut Hoenig) (10/19/90)

Synchronization after destroying windows (especially popups)

After destroying popup-windows with XDestroyWindow or indirectly by
destroying a widget, I have the problem, that drawing-requests for
windows below the popup are earlier executed than the removal of the
popup.  When the popup is removed, the background is restored
without any exposures. But some of the things I've just drawn are
missing.

I am doing the following steps in order:

1. destroying a popup-widget p, which overlapped window w partially
2. clearing window w
3. drawing lines to window w
4. copying pixmaps and drawing text to window w

If the popup was removed before steps 2-4 are executed, everything is
ok.  But if the popup is removed delayed by the server (I have
eye-whitnesses for this), the copied pixmaps are missing in the area,
where the popup was.  The other drawing-functions (lines, text) worked
correctly, which means they had to draw to the region, where the
background was stored.

Questions:

- Why does the server delay the removal of the windows ?

- Is it only a bug in the XCopyArea, since other drawing functions work
  correctly during the delay-time ?

- How can I wait, until a window absolutely is removed. ?
  I tried XSync before step 2, but this still doesn't work.

The missing exposures are just a small problem.  I got more trouble with
the XQueryPointer-function, which could return child-ids of destroyed
windows, if they were not yet removed by the server. 


I hope somebody could help me, since I already spent too much time with
that problem.

Helmut Hoenig
hoenig@informatik.uni-kl.de