Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ncar!boulder!stan!garya From: garya@stan.com (Gary Aitken) Newsgroups: comp.windows.x Subject: SubstructureRedirect & server out of sync bug Keywords: SubstructureRedirect, ICCCM, OverrideRedirect Message-ID: <525@stan.stan.UUCP> Date: 2 Mar 89 21:14:44 GMT Organization: Solbourne Computer Inc., Longmont, Co. Lines: 42 I think there is a major hole in the server operation with regards to processing of windows effected by SubstructureRedirect set on their parent. Consider the following: Window is owned by Client, is parented to Root. WindowManager (WM) has set SubstructureRedirect on Root. Client moves Window. Server converts move into request and sends it to WM. Client does some operation (e.g. WarpPointer) relative to origin of Window. WM hasn't processed move request yet. Server warps pointer to old location of window; then WM catches up and Window moves out from under. If override redirect is set for the window, this problem goes away. But the ICCCM proposal suggests that this window should really be a transient for type window, which puts the problem back in. For this to work properly, the server needs to operate as follows: Any time it has redirected an operation to another client, it should block all further requests for the window from all clients except the client to which the request was redirected, until it receives a complementary directive in response to the redirect. Clients setting SubstructureRedirect are then required to act on it. e.g. A ConfigureWindow must be sent out following receipt of a ConfigureRequest; a MapWindow or UnmapWindow must be sent out following receipt of a MapRequest; a ConfigureWindow must be sent out following a ResizeRequest. Unless the server does this already for some requests, such as an info request for the Window, this problem can show up all sorts of places. Correct? Or did I miss something somewhere? Gary Aitken ncar!boulder!stan!garya