summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2007-05-25 12:15:36 +1000
committerBen Skeggs <skeggsb@gmail.com>2007-05-25 12:15:36 +1000
commit9e1c6c6033a662f741d15a7fc0f9b34945578821 (patch)
tree376ab7a61076c8037bc8dce126f6ee20d08928bd
parentd18dd08148bb8da67e9b58fcc182cc639d9cb355 (diff)
downloadxorg-driver-xf86-video-nouveau-9e1c6c6033a662f741d15a7fc0f9b34945578821.tar.gz
NV50: exit without SEGV
-rw-r--r--src/nv_driver.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/nv_driver.c b/src/nv_driver.c
index 0f47a0a..92697f8 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -1003,9 +1003,13 @@ NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
NVPtr pNv = NVPTR(pScrn);
if (pScrn->vtSema) {
- pScrn->vtSema = FALSE;
- NVSync(pScrn);
- NVRestore(pScrn);
+ ErrorF("*************\n");
+ if (pNv->Architecture == NV_ARCH_50) {
+ NV50ReleaseDisplay(pScrn);
+ } else {
+ NVSync(pScrn);
+ NVRestore(pScrn);
+ }
}
NVUnmapMem(pScrn);
@@ -1021,6 +1025,7 @@ NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
if (pNv->blitAdaptor)
xfree(pNv->blitAdaptor);
+ pScrn->vtSema = FALSE;
pScreen->CloseScreen = pNv->CloseScreen;
pScreen->BlockHandler = pNv->BlockHandler;
return (*pScreen->CloseScreen) (scrnIndex, pScreen);