summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Reveman <davidr@novell.com>2008-11-18 18:22:34 -0500
committerDavid Reveman <davidr@novell.com>2008-11-18 18:22:34 -0500
commitf05de44e824838b0debbfec6e8342639e97a3cbb (patch)
tree9d09ef3cb6276f933ac328c02c928513a9245b78
parent0a4fa666b5f264769858cf12ecec4f1f4978020d (diff)
Never update proxy window geometry on backend server.
-rw-r--r--hw/dmx/dmxwindow.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/hw/dmx/dmxwindow.c b/hw/dmx/dmxwindow.c
index 4e06fea13..3a0ab1601 100644
--- a/hw/dmx/dmxwindow.c
+++ b/hw/dmx/dmxwindow.c
@@ -263,6 +263,7 @@ static Window dmxCreateNonRootWindow(WindowPtr pWindow)
XSetWindowAttributes attribs;
dmxWinPrivPtr pParentPriv = DMX_GET_WINDOW_PRIV(pWindow->parent);
Window win = None;
+ int x, y, w, h, bw;
/* Avoid to create windows on back-end servers with virtual framebuffer */
if (dmxScreen->virtualFb)
@@ -309,14 +310,29 @@ static Window dmxCreateNonRootWindow(WindowPtr pWindow)
be created on top of the stack, so we must restack the windows */
pWinPriv->restacked = (pWindow->prevSib != NullWindow);
+ if (pWindow != dmxScreen->pInputOverlayWin)
+ {
+ x = pWindow->origin.x - wBorderWidth(pWindow);
+ y = pWindow->origin.y - wBorderWidth(pWindow);
+ w = pWindow->drawable.width;
+ h = pWindow->drawable.height;
+ bw = pWindow->borderWidth;
+ }
+ else
+ {
+ x = y = -1;
+ w = h = 1;
+ bw = 0;
+ }
+
XLIB_PROLOGUE (dmxScreen);
win = XCreateWindow(dmxScreen->beDisplay,
parent,
- pWindow->origin.x - wBorderWidth(pWindow),
- pWindow->origin.y - wBorderWidth(pWindow),
- pWindow->drawable.width,
- pWindow->drawable.height,
- pWindow->borderWidth,
+ x,
+ y,
+ w,
+ h,
+ bw,
pWindow->drawable.depth,
pWindow->drawable.class,
pWinPriv->visual,
@@ -514,7 +530,7 @@ Bool dmxPositionWindow(WindowPtr pWindow, int x, int y)
been created yet, create it and map it */
if (!pWinPriv->window && pWinPriv->mapped && !pWinPriv->offscreen) {
dmxCreateAndRealizeWindow(pWindow, TRUE);
- } else if (pWinPriv->window) {
+ } else if (pWinPriv->window && pWindow != dmxScreen->pInputOverlayWin) {
/* Position window on back-end server */
m = CWX | CWY | CWWidth | CWHeight;
c.x = pWindow->origin.x - wBorderWidth(pWindow);
@@ -897,7 +913,7 @@ void dmxResizeWindow(WindowPtr pWindow, int x, int y,
been created yet, create it and map it */
if (!pWinPriv->window && pWinPriv->mapped && !pWinPriv->offscreen) {
dmxCreateAndRealizeWindow(pWindow, TRUE);
- } else if (pWinPriv->window) {
+ } else if (pWinPriv->window && pWindow != dmxScreen->pInputOverlayWin) {
/* Handle resizing on back-end server */
m = CWX | CWY | CWWidth | CWHeight;
c.x = pWindow->origin.x - wBorderWidth(pWindow);
@@ -960,7 +976,7 @@ void dmxChangeBorderWidth(WindowPtr pWindow, unsigned int width)
/* NOTE: Do we need to check for on/off screen here? */
- if (pWinPriv->window) {
+ if (pWinPriv->window && pWindow != dmxScreen->pInputOverlayWin) {
/* Handle border width change on back-end server */
m = CWBorderWidth;
c.border_width = width;