diff options
author | Ben Skeggs <skeggsb@gmail.com> | 2007-05-25 12:15:36 +1000 |
---|---|---|
committer | Ben Skeggs <skeggsb@gmail.com> | 2007-05-25 12:15:36 +1000 |
commit | 9e1c6c6033a662f741d15a7fc0f9b34945578821 (patch) | |
tree | 376ab7a61076c8037bc8dce126f6ee20d08928bd | |
parent | d18dd08148bb8da67e9b58fcc182cc639d9cb355 (diff) | |
download | xorg-driver-xf86-video-nouveau-9e1c6c6033a662f741d15a7fc0f9b34945578821.tar.gz |
NV50: exit without SEGV
-rw-r--r-- | src/nv_driver.c | 11 |
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); |