Clean up xf86CrtcRec and xf86OutputRec objects at CloseScreen.

Erase pointers to structures which are freed at server reset time.
(cherry picked from commit 492c768065)
This commit is contained in:
Keith Packard 2007-03-23 00:59:11 -07:00
parent 479b2be4ba
commit 510eaa346e

View File

@ -573,11 +573,25 @@ xf86CrtcCloseScreen (int index, ScreenPtr screen)
{ {
ScrnInfoPtr scrn = xf86Screens[screen->myNum]; ScrnInfoPtr scrn = xf86Screens[screen->myNum];
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
int o, c;
screen->CloseScreen = config->CloseScreen; screen->CloseScreen = config->CloseScreen;
xf86RotateCloseScreen (screen); xf86RotateCloseScreen (screen);
for (o = 0; o < config->num_output; o++)
{
xf86OutputPtr output = config->output[o];
output->crtc = NULL;
output->randr_output = NULL;
}
for (c = 0; c < config->num_crtc; c++)
{
xf86CrtcPtr crtc = config->crtc[c];
crtc->randr_crtc = NULL;
}
return screen->CloseScreen (index, screen); return screen->CloseScreen (index, screen);
} }