summaryrefslogtreecommitdiff
path: root/hw/xnest
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xnest')
-rw-r--r--hw/xnest/Screen.c5
-rw-r--r--hw/xnest/Window.c7
-rw-r--r--hw/xnest/XNWindow.h1
3 files changed, 13 insertions, 0 deletions
diff --git a/hw/xnest/Screen.c b/hw/xnest/Screen.c
index 676e7748f..3dec48b5f 100644
--- a/hw/xnest/Screen.c
+++ b/hw/xnest/Screen.c
@@ -361,6 +361,11 @@ xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[])
if (!miScreenDevPrivateInit(pScreen, xnestWidth, NULL))
return FALSE;
+#ifdef SHAPE
+ /* overwrite miSetShape with our own */
+ pScreen->SetShape = xnestSetShape;
+#endif /* SHAPE */
+
/* devPrivates */
#define POSITION_OFFSET (pScreen->myNum * (xnestWidth + xnestHeight) / 32)
diff --git a/hw/xnest/Window.c b/hw/xnest/Window.c
index f7e04844e..a8d65fb7c 100644
--- a/hw/xnest/Window.c
+++ b/hw/xnest/Window.c
@@ -449,6 +449,13 @@ xnestWindowExposures(WindowPtr pWin, RegionPtr pRgn, RegionPtr other_exposed)
}
#ifdef SHAPE
+void
+xnestSetShape(WindowPtr pWin)
+{
+ xnestShapeWindow(pWin);
+ miSetShape(pWin);
+}
+
static Bool
xnestRegionEqual(RegionPtr pReg1, RegionPtr pReg2)
{
diff --git a/hw/xnest/XNWindow.h b/hw/xnest/XNWindow.h
index cc49b2343..3a57646a7 100644
--- a/hw/xnest/XNWindow.h
+++ b/hw/xnest/XNWindow.h
@@ -73,6 +73,7 @@ void xnestClipNotify(WindowPtr pWin, int dx, int dy);
void xnestWindowExposures(WindowPtr pWin, RegionPtr pRgn,
RegionPtr other_exposed);
#ifdef SHAPE
+void xnestSetShape(WindowPtr pWin);
void xnestShapeWindow(WindowPtr pWin);
#endif /* SHAPE */