xfree86: crtc: use PostCreateResources screen hook
Wrapping ScreenRec's function pointers is problematic for many reasons, so use the new PostCreateScreenResources screen hook instead. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
parent
36f0cfcecf
commit
766f51e0c1
|
@ -747,23 +747,12 @@ xf86OutputDestroy(xf86OutputPtr output)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Called during CreateScreenResources to hook up RandR
|
* installed by xf86CrtcScreenInit() and called by during CreateScreenResources
|
||||||
*/
|
*/
|
||||||
static Bool
|
static void xf86CrtcCreateScreenResources(CallbackListPtr *pcbl,
|
||||||
xf86CrtcCreateScreenResources(ScreenPtr screen)
|
ScreenPtr pScreen, Bool *ret)
|
||||||
{
|
{
|
||||||
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
|
xf86RandR12CreateScreenResources(pScreen);
|
||||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
|
||||||
|
|
||||||
screen->CreateScreenResources = config->CreateScreenResources;
|
|
||||||
|
|
||||||
if (!(*screen->CreateScreenResources) (screen))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (!xf86RandR12CreateScreenResources(screen))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -773,6 +762,7 @@ static void xf86CrtcCloseScreen(CallbackListPtr *pcbl,
|
||||||
ScreenPtr screen, void *unused)
|
ScreenPtr screen, void *unused)
|
||||||
{
|
{
|
||||||
dixScreenUnhookClose(screen, xf86CrtcCloseScreen);
|
dixScreenUnhookClose(screen, xf86CrtcCloseScreen);
|
||||||
|
dixScreenUnhookPostCreateResources(screen, xf86CrtcCreateScreenResources);
|
||||||
|
|
||||||
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
|
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
|
||||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||||
|
@ -840,11 +830,8 @@ xf86CrtcScreenInit(ScreenPtr screen)
|
||||||
xf86RandR12SetTransformSupport(screen, FALSE);
|
xf86RandR12SetTransformSupport(screen, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wrap CreateScreenResources so we can initialize the RandR code */
|
|
||||||
config->CreateScreenResources = screen->CreateScreenResources;
|
|
||||||
screen->CreateScreenResources = xf86CrtcCreateScreenResources;
|
|
||||||
|
|
||||||
dixScreenHookClose(screen, xf86CrtcCloseScreen);
|
dixScreenHookClose(screen, xf86CrtcCloseScreen);
|
||||||
|
dixScreenHookPostCreateResources(screen, xf86CrtcCreateScreenResources);
|
||||||
|
|
||||||
/* This might still be marked wrapped from a previous generation */
|
/* This might still be marked wrapped from a previous generation */
|
||||||
config->BlockHandler = NULL;
|
config->BlockHandler = NULL;
|
||||||
|
|
Loading…
Reference in New Issue