summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2004-08-12 00:09:30 +0000
committerKeith Packard <keithp@keithp.com>2004-08-12 00:09:30 +0000
commit9d0213525f4f692c250f10309146fe9db76ba12d (patch)
tree77df2a4d28294ec8e074a32f8205535668f4f629
parentc7bc76f663008119b3681d4b7adef7dc9ffdc236 (diff)
Paint to parent window instead of parent window's pixmap (helps for servers
that don't have a pixmap for the root) Fix offsets for render drawing.
-rw-r--r--composite/compwindow.c11
-rw-r--r--miext/cw/cw_render.c4
2 files changed, 8 insertions, 7 deletions
diff --git a/composite/compwindow.c b/composite/compwindow.c
index ec63fbcb1..5adc5efc8 100644
--- a/composite/compwindow.c
+++ b/composite/compwindow.c
@@ -648,7 +648,6 @@ compWindowUpdateAutomatic (WindowPtr pWin)
ScreenPtr pScreen = pWin->drawable.pScreen;
WindowPtr pParent = pWin->parent;
PixmapPtr pSrcPixmap = (*pScreen->GetWindowPixmap) (pWin);
- PixmapPtr pDstPixmap = (*pScreen->GetWindowPixmap) (pParent);
PictFormatPtr pSrcFormat = compWindowFormat (pWin);
PictFormatPtr pDstFormat = compWindowFormat (pWin->parent);
int error;
@@ -658,9 +657,11 @@ compWindowUpdateAutomatic (WindowPtr pWin)
0, 0,
serverClient,
&error);
- PicturePtr pDstPicture = CreatePicture (0, &pDstPixmap->drawable,
+ XID subwindowMode = IncludeInferiors;
+ PicturePtr pDstPicture = CreatePicture (0, &pParent->drawable,
pDstFormat,
- 0, 0,
+ CPSubwindowMode,
+ &subwindowMode,
serverClient,
&error);
@@ -679,8 +680,8 @@ compWindowUpdateAutomatic (WindowPtr pWin)
0,
0,
0, 0,
- pSrcPixmap->screen_x - pDstPixmap->screen_x,
- pSrcPixmap->screen_y - pDstPixmap->screen_y,
+ pSrcPixmap->screen_x - pParent->drawable.x,
+ pSrcPixmap->screen_y - pParent->drawable.y,
pSrcPixmap->drawable.width,
pSrcPixmap->drawable.height);
FreePicture (pSrcPicture, 0);
diff --git a/miext/cw/cw_render.c b/miext/cw/cw_render.c
index 9e9ad3a3f..8e4ae9cdd 100644
--- a/miext/cw/cw_render.c
+++ b/miext/cw/cw_render.c
@@ -106,8 +106,8 @@ cwGetBackingPicture (PicturePtr pPicture, int *x_off, int *y_off)
WindowPtr pWin = (WindowPtr) pDrawable;
PixmapPtr pPixmap = (*pScreen->GetWindowPixmap) (pWin);
- *x_off = pPixmap->drawable.x - pPixmap->screen_x;
- *y_off = pPixmap->drawable.y - pPixmap->screen_y;
+ *x_off = pWin->drawable.x - pPixmap->screen_x;
+ *y_off = pWin->drawable.y - pPixmap->screen_y;
return pBackingPicture;
}