Add xf86CrtcScreenInit to share initialization across drivers.
xf86CrtcScreenInit performs initialization that needs to happen at
ScreenInit time.
(cherry picked from commit 558a4f5588
)
This commit is contained in:
parent
81526232bc
commit
72a23d88d7
|
@ -545,6 +545,60 @@ xf86OutputDestroy (xf86OutputPtr output)
|
|||
xfree (output);
|
||||
}
|
||||
|
||||
/*
|
||||
* Called during CreateScreenResources to hook up RandR
|
||||
*/
|
||||
static Bool
|
||||
xf86CrtcCreateScreenResources (ScreenPtr screen)
|
||||
{
|
||||
ScrnInfoPtr scrn = xf86Screens[screen->myNum];
|
||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||
|
||||
screen->CreateScreenResources = config->CreateScreenResources;
|
||||
|
||||
if (!(*screen->CreateScreenResources)(screen))
|
||||
return FALSE;
|
||||
|
||||
if (!xf86RandR12CreateScreenResources (screen))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Called at ScreenInit time to set up
|
||||
*/
|
||||
Bool
|
||||
xf86CrtcScreenInit (ScreenPtr screen)
|
||||
{
|
||||
ScrnInfoPtr scrn = xf86Screens[screen->myNum];
|
||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||
int c;
|
||||
|
||||
/* Rotation */
|
||||
xf86DrvMsg(scrn->scrnIndex, X_INFO, "RandR 1.2 enabled, ignore the following RandR disabled message.\n");
|
||||
xf86DisableRandR(); /* Disable old RandR extension support */
|
||||
xf86RandR12Init (screen);
|
||||
|
||||
/* support all rotations if every crtc has the shadow alloc funcs */
|
||||
for (c = 0; c < config->num_crtc; c++)
|
||||
{
|
||||
xf86CrtcPtr crtc = config->crtc[c];
|
||||
if (!crtc->funcs->shadow_allocate || !crtc->funcs->shadow_create)
|
||||
break;
|
||||
}
|
||||
if (c == config->num_crtc)
|
||||
xf86RandR12SetRotations (screen, RR_Rotate_0 | RR_Rotate_90 |
|
||||
RR_Rotate_180 | RR_Rotate_270);
|
||||
else
|
||||
xf86RandR12SetRotations (screen, RR_Rotate_0);
|
||||
|
||||
/* Wrap CreateScreenResources so we can initialize the RandR code */
|
||||
config->CreateScreenResources = screen->CreateScreenResources;
|
||||
screen->CreateScreenResources = xf86CrtcCreateScreenResources;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static DisplayModePtr
|
||||
xf86DefaultMode (xf86OutputPtr output, int width, int height)
|
||||
{
|
||||
|
|
|
@ -494,6 +494,7 @@ typedef struct _xf86CrtcConfig {
|
|||
|
||||
const xf86CrtcConfigFuncsRec *funcs;
|
||||
|
||||
CreateScreenResourcesProcPtr CreateScreenResources;
|
||||
} xf86CrtcConfigRec, *xf86CrtcConfigPtr;
|
||||
|
||||
extern int xf86CrtcConfigPrivateIndex;
|
||||
|
@ -524,25 +525,6 @@ void
|
|||
xf86CrtcDestroy (xf86CrtcPtr crtc);
|
||||
|
||||
|
||||
/**
|
||||
* Allocate a crtc for the specified output
|
||||
*
|
||||
* Find a currently unused CRTC which is suitable for
|
||||
* the specified output
|
||||
*/
|
||||
|
||||
xf86CrtcPtr
|
||||
xf86AllocCrtc (xf86OutputPtr output);
|
||||
|
||||
/**
|
||||
* Free a crtc
|
||||
*
|
||||
* Mark the crtc as unused by any outputs
|
||||
*/
|
||||
|
||||
void
|
||||
xf86FreeCrtc (xf86CrtcPtr crtc);
|
||||
|
||||
/**
|
||||
* Sets the given video mode on the given crtc
|
||||
*/
|
||||
|
@ -582,6 +564,9 @@ xf86ProbeOutputModes (ScrnInfoPtr pScrn, int maxX, int maxY);
|
|||
void
|
||||
xf86SetScrnInfoModes (ScrnInfoPtr pScrn);
|
||||
|
||||
Bool
|
||||
xf86CrtcScreenInit (ScreenPtr pScreen);
|
||||
|
||||
Bool
|
||||
xf86InitialConfiguration (ScrnInfoPtr pScrn, Bool canGrow);
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#define xf86CrtcDestroy XF86NAME(xf86CrtcDestroy)
|
||||
#define xf86CrtcInUse XF86NAME(xf86CrtcInUse)
|
||||
#define xf86CrtcRotate XF86NAME(xf86CrtcRotate)
|
||||
#define xf86CrtcScreenInit XF86NAME(xf86CrtcScreenInit)
|
||||
#define xf86CrtcSetMode XF86NAME(xf86CrtcSetMode)
|
||||
#define xf86CrtcSetSizeRange XF86NAME(xf86CrtcSetSizeRange)
|
||||
#define xf86CVTMode XF86NAME(xf86CVTMode)
|
||||
|
|
Loading…
Reference in New Issue
Block a user