diff options
Diffstat (limited to 'xc/programs/Xserver/Xext/xf86dga.c')
-rw-r--r-- | xc/programs/Xserver/Xext/xf86dga.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/xc/programs/Xserver/Xext/xf86dga.c b/xc/programs/Xserver/Xext/xf86dga.c index aa61e850a..9593c4a40 100644 --- a/xc/programs/Xserver/Xext/xf86dga.c +++ b/xc/programs/Xserver/Xext/xf86dga.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/Xext/xf86dga.c,v 3.19 1999/08/01 07:56:59 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/xf86dga.c,v 3.21 2000/06/30 19:06:54 keithp Exp $ */ /* @@ -100,6 +100,10 @@ ProcXF86DGADirectVideo(ClientPtr client) if(Success != DGASetMode(stuff->screen, num, &mode, &pix)) return (DGAErrorBase + XF86DGAScreenNotActive); + DGASetInputMode (stuff->screen, + (stuff->enable & XF86DGADirectKeyb) != 0, + (stuff->enable & XF86DGADirectMouse) != 0); + return (client->noClientException); } @@ -145,7 +149,16 @@ ProcXF86DGASetViewPort(ClientPtr client) REQUEST_SIZE_MATCH(xXF86DGASetViewPortReq); if (!DGAActive(stuff->screen)) - return (DGAErrorBase + XF86DGADirectNotActivated); + { + int num; + PixmapPtr pix; + XDGAModeRec mode; + + if(!(num = DGAGetOldDGAMode(stuff->screen))) + return (DGAErrorBase + XF86DGANoDirectVideoMode); + if(Success != DGASetMode(stuff->screen, num, &mode, &pix)) + return (DGAErrorBase + XF86DGAScreenNotActive); + } if (DGASetViewport(stuff->screen, stuff->x, stuff->y, DGA_FLIP_RETRACE) != Success) |