Kludge -- Call RandR screen before cleaning up xf86 crtcs

The core RandR screen cleanup now involves cleaning up any GPU screen
associations, and those call down into DDX to clean up the driver. If
the pointers from the xf86 structures back to the core randr
structures are set to NULL at that point, bad things happen.

This patch "knows" that the core RandR close screen is underneath the
xf86 randr close screen function, and so makes sure it gets called
first.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Keith Packard 2012-08-07 17:49:48 -07:00
parent 288b87e42c
commit c0540b4c8d

View File

@ -726,6 +726,12 @@ xf86CrtcCloseScreen(ScreenPtr screen)
xf86RotateCloseScreen(screen); xf86RotateCloseScreen(screen);
xf86RandR12CloseScreen(screen);
free(config->name);
screen->CloseScreen(screen);
for (o = 0; o < config->num_output; o++) { for (o = 0; o < config->num_output; o++) {
xf86OutputPtr output = config->output[o]; xf86OutputPtr output = config->output[o];
@ -749,10 +755,7 @@ xf86CrtcCloseScreen(ScreenPtr screen)
else if (screen->current_master) else if (screen->current_master)
DetachUnboundGPU(screen); DetachUnboundGPU(screen);
} }
xf86RandR12CloseScreen(screen); return TRUE;
free(config->name);
return screen->CloseScreen(screen);
} }
/* /*