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 | ||||
| xf86CrtcCreateScreenResources(ScreenPtr screen) | ||||
| static void xf86CrtcCreateScreenResources(CallbackListPtr *pcbl, | ||||
|                                           ScreenPtr pScreen, Bool *ret) | ||||
| { | ||||
|     ScrnInfoPtr scrn = xf86ScreenToScrn(screen); | ||||
|     xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); | ||||
| 
 | ||||
|     screen->CreateScreenResources = config->CreateScreenResources; | ||||
| 
 | ||||
|     if (!(*screen->CreateScreenResources) (screen)) | ||||
|         return FALSE; | ||||
| 
 | ||||
|     if (!xf86RandR12CreateScreenResources(screen)) | ||||
|         return FALSE; | ||||
| 
 | ||||
|     return TRUE; | ||||
|     xf86RandR12CreateScreenResources(pScreen); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  | @ -773,6 +762,7 @@ static void xf86CrtcCloseScreen(CallbackListPtr *pcbl, | |||
|                                 ScreenPtr screen, void *unused) | ||||
| { | ||||
|     dixScreenUnhookClose(screen, xf86CrtcCloseScreen); | ||||
|     dixScreenUnhookPostCreateResources(screen, xf86CrtcCreateScreenResources); | ||||
| 
 | ||||
|     ScrnInfoPtr scrn = xf86ScreenToScrn(screen); | ||||
|     xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); | ||||
|  | @ -840,11 +830,8 @@ xf86CrtcScreenInit(ScreenPtr screen) | |||
|         xf86RandR12SetTransformSupport(screen, FALSE); | ||||
|     } | ||||
| 
 | ||||
|     /* Wrap CreateScreenResources so we can initialize the RandR code */ | ||||
|     config->CreateScreenResources = screen->CreateScreenResources; | ||||
|     screen->CreateScreenResources = xf86CrtcCreateScreenResources; | ||||
| 
 | ||||
|     dixScreenHookClose(screen, xf86CrtcCloseScreen); | ||||
|     dixScreenHookPostCreateResources(screen, xf86CrtcCreateScreenResources); | ||||
| 
 | ||||
|     /* This might still be marked wrapped from a previous generation */ | ||||
|     config->BlockHandler = NULL; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue