IsFramedWindow() is called from miPaintWindow() if the server has been built with ROOTLESS defined, irrespective of if RootlessInit() has ever been called, or not.
Add a check to IsFramedWindow() to check if rootlessWindowPrivateKey has been initialized (as a proxy for checking if the rootless extension has been initialized) so we don't go on to try to use that key, triggering an assert. Does this bug expose what appears to be a difference in opinion about the rootless extension between XQuartz and XWin? XQuartz always initializes the rootless extension, whereas XWin offers several mode of operation, and the rootless extension is only used for one of them? If so, that probably means that the code under compile time guard for ROOTLESS should also be under a run-time guard. Signed-off-by: Jon TURNEY <[email protected]> Reviewed-by: Colin Harrison <[email protected]> Reviewed-by: Jeremy Huddleston <[email protected]> --- Keith, Cygwin/X asserts on startup except in rootless mode without this fix. Please consider applying to master. miext/rootless/rootlessCommon.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/miext/rootless/rootlessCommon.c b/miext/rootless/rootlessCommon.c index 82fe0b9..51e01e9 100644 --- a/miext/rootless/rootlessCommon.c +++ b/miext/rootless/rootlessCommon.c @@ -92,6 +92,9 @@ IsFramedWindow(WindowPtr pWin) { WindowPtr top; + if (!rootlessWindowPrivateKeyRec.initialized) + return FALSE; + if (!pWin->realized) return FALSE; top = TopLevelParent(pWin); -- 1.7.1 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
