void MSMAccelFini(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); MSMPtr pMsm = MSMPTR(pScrn); /* Close DRI2 */ if (pMsm->dri) { MSMDRI2CloseScreen(pScreen); } /* Close EXA */ if (pMsm->pExa) { exaDriverFini(pScreen); free(pMsm->pExa); pMsm->pExa = NULL; } #ifdef HAVE_XA if (pMsm->xa) { xa_tracker_destroy(pMsm->xa); pMsm->xa = NULL; } #endif }
static Bool CloseScreen(int scrnIndex, ScreenPtr pScreen) { #if 0 // TODO need to change CloseScreen/FreeScreen .. exaDriverFini(pScreen); free(pNv->EXADriverPtr); #endif return TRUE; }
/** * CloseScreen() is called at the end of each server generation and * cleans up everything initialised in InitNullEXA() */ static Bool CloseScreen(CLOSE_SCREEN_ARGS_DECL) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn); exaDriverFini(pScreen); free(((struct ARMSOCNullEXARec *)pARMSOC->pARMSOCEXA)->exa); free(pARMSOC->pARMSOCEXA); pARMSOC->pARMSOCEXA = NULL; return TRUE; }