summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfaith <faith>2000-11-13 20:03:55 +0000
committerfaith <faith>2000-11-13 20:03:55 +0000
commit24d6d9c0b99ead3d89c3c71f9598dd4522e59265 (patch)
treeb417b1bd07861559837d1da23a310d0c1c344648
parent457bf67444705b0f235147e1fc1e6f72171740a0 (diff)
Mask VisibilityChange events when entering fullscreen mode
These sometimes (but not always) notify the client that the window is completely obscured
-rw-r--r--xc/programs/Xserver/GL/dri/dri.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/xc/programs/Xserver/GL/dri/dri.c b/xc/programs/Xserver/GL/dri/dri.c
index 8a1139435..2c54c8fb0 100644
--- a/xc/programs/Xserver/GL/dri/dri.c
+++ b/xc/programs/Xserver/GL/dri/dri.c
@@ -1771,6 +1771,8 @@ DRIOpenFullScreen(ScreenPtr pScreen, DrawablePtr pDrawable)
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
WindowPtr pWin = (WindowPtr)pDrawable;
XF86DRIClipRectPtr pClipRects = (void *)REGION_RECTS(&pWin->clipList);
+ WindowOptPtr optional = pWin->optional;
+ Mask mask = pWin->eventMask;
_DRIAdjustFrame(pScrn, pDRIPriv, pScrn->frameX0, pScrn->frameY0);
@@ -1796,7 +1798,14 @@ DRIOpenFullScreen(ScreenPtr pScreen, DrawablePtr pDrawable)
AddResource(pDrawable->id, DRIFullScreenResType, (pointer)pWin);
xf86EnableVTSwitch(FALSE);
+ /* Turn off visibility change events for
+ the top window */
+ pWin->eventMask &= ~VisibilityChangeMask;
+ pWin->optional = NULL;
pScrn->EnableDisableFBAccess(pScreen->myNum, FALSE);
+ pWin->eventMask = mask;
+ pWin->optional = optional;
+
pScrn->vtSema = FALSE;
pDRIPriv->fullscreen = pDrawable;
DRIClipNotify(pWin, 0, 0);