From 351a21213a966c389574b50abf13a974c0aae022 Mon Sep 17 00:00:00 2001 From: marha Date: Sat, 2 Jan 2010 15:01:46 +0000 Subject: Fixed problem of clipboard client being shutdown when connecting through xdmcp. --- xorg-server/dix/dispatch.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/xorg-server/dix/dispatch.c b/xorg-server/dix/dispatch.c index d431d4f75..b813136c7 100644 --- a/xorg-server/dix/dispatch.c +++ b/xorg-server/dix/dispatch.c @@ -1018,6 +1018,13 @@ ProcGetGeometry(ClientPtr client) return(client->noClientException); } +#ifdef WIN32 +/* Do not return the clipboard window in ProcQueryTree, cause this may cause + the clipboard client being closed when connecting through xdmcp. +*/ +extern int g_iClipboardWindow; + +#endif int ProcQueryTree(ClientPtr client) @@ -1042,7 +1049,10 @@ ProcQueryTree(ClientPtr client) reply.parent = (Window)None; pHead = RealChildHead(pWin); for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib) - numChildren++; +#ifdef WIN32 + if (pChild->drawable.id!=g_iClipboardWindow) +#endif + numChildren++; if (numChildren) { int curChild = 0; @@ -1051,7 +1061,10 @@ ProcQueryTree(ClientPtr client) if (!childIDs) return BadAlloc; for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib) - childIDs[curChild++] = pChild->drawable.id; +#ifdef WIN32 + if (pChild->drawable.id!=g_iClipboardWindow) +#endif + childIDs[curChild++] = pChild->drawable.id; } reply.nChildren = numChildren; -- cgit v1.2.3