From 2a31e38d82566c4f93773ecf9c79f2cc9abef169 Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 16 Jun 2010 07:28:49 +0000 Subject: xserver and libxcb git update 11/6/2010 --- xorg-server/hw/xfree86/modes/xf86RandR12.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'xorg-server/hw/xfree86/modes/xf86RandR12.c') diff --git a/xorg-server/hw/xfree86/modes/xf86RandR12.c b/xorg-server/hw/xfree86/modes/xf86RandR12.c index e49387317..90e267c1e 100644 --- a/xorg-server/hw/xfree86/modes/xf86RandR12.c +++ b/xorg-server/hw/xfree86/modes/xf86RandR12.c @@ -927,6 +927,24 @@ xf86RandR12Init (ScreenPtr pScreen) return TRUE; } +void +xf86RandR12CloseScreen (ScreenPtr pScreen) +{ + XF86RandRInfoPtr randrp; + +#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0) + if (xf86RandR12Key == NULL) + return; +#endif + + randrp = XF86RANDRINFO(pScreen); +#if RANDR_12_INTERFACE + xf86Screens[pScreen->myNum]->EnterVT = randrp->orig_EnterVT; +#endif + + free(randrp); +} + void xf86RandR12SetRotations (ScreenPtr pScreen, Rotation rotations) { @@ -1755,10 +1773,16 @@ static Bool xf86RandR12EnterVT (int screen_index, int flags) { ScreenPtr pScreen = screenInfo.screens[screen_index]; + ScrnInfoPtr pScrn = xf86Screens[screen_index]; XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); + Bool ret; if (randrp->orig_EnterVT) { - if (!randrp->orig_EnterVT (screen_index, flags)) + pScrn->EnterVT = randrp->orig_EnterVT; + ret = pScrn->EnterVT (screen_index, flags); + randrp->orig_EnterVT = pScrn->EnterVT; + pScrn->EnterVT = xf86RandR12EnterVT; + if (!ret) return FALSE; } -- cgit v1.2.3