Merge branch 'master' of git+ssh://bbyer@git.freedesktop.org/git/xorg/xserver
This commit is contained in:
commit
0ccd1443fd
|
@ -879,13 +879,17 @@ xf86InitialOutputPositions (ScrnInfoPtr scrn, DisplayModePtr *modes)
|
|||
{
|
||||
xf86OutputPtr out_rel = config->output[or];
|
||||
XF86ConfMonitorPtr rel_mon = out_rel->conf_monitor;
|
||||
char *name;
|
||||
|
||||
if (rel_mon)
|
||||
name = rel_mon->mon_identifier;
|
||||
else
|
||||
name = out_rel->name;
|
||||
if (!strcmp (relative_name, name))
|
||||
{
|
||||
if (xf86nameCompare (rel_mon->mon_identifier,
|
||||
relative_name) == 0)
|
||||
{
|
||||
relative = config->output[or];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (strcmp (out_rel->name, relative_name) == 0)
|
||||
{
|
||||
relative = config->output[or];
|
||||
break;
|
||||
|
@ -1542,6 +1546,63 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Using the desired mode information in each crtc, set
|
||||
* modes (used in EnterVT functions, or at server startup)
|
||||
*/
|
||||
|
||||
Bool
|
||||
xf86SetDesiredModes (ScrnInfoPtr scrn)
|
||||
{
|
||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||
int c;
|
||||
|
||||
for (c = 0; c < config->num_crtc; c++)
|
||||
{
|
||||
xf86CrtcPtr crtc = config->crtc[c];
|
||||
xf86OutputPtr output = NULL;
|
||||
int o;
|
||||
|
||||
if (config->output[config->compat_output]->crtc == crtc)
|
||||
output = config->output[config->compat_output];
|
||||
else
|
||||
{
|
||||
for (o = 0; o < config->num_output; o++)
|
||||
if (config->output[o]->crtc == crtc)
|
||||
{
|
||||
output = config->output[o];
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Skip disabled crtcs
|
||||
*/
|
||||
if (!output)
|
||||
continue;
|
||||
|
||||
/* Mark that we'll need to re-set the mode for sure */
|
||||
memset(&crtc->mode, 0, sizeof(crtc->mode));
|
||||
if (!crtc->desiredMode.CrtcHDisplay)
|
||||
{
|
||||
DisplayModePtr mode = xf86OutputFindClosestMode (output, scrn->currentMode);
|
||||
|
||||
if (!mode)
|
||||
return FALSE;
|
||||
crtc->desiredMode = *mode;
|
||||
crtc->desiredRotation = RR_Rotate_0;
|
||||
crtc->desiredX = 0;
|
||||
crtc->desiredY = 0;
|
||||
}
|
||||
|
||||
if (!xf86CrtcSetMode (crtc, &crtc->desiredMode, crtc->desiredRotation,
|
||||
crtc->desiredX, crtc->desiredY))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
xf86DisableUnusedFunctions(scrn);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* In the current world order, there are lists of modes per output, which may
|
||||
* or may not include the mode that was asked to be set by XFree86's mode
|
||||
|
|
|
@ -644,4 +644,12 @@ xf86CrtcSetScreenSubpixelOrder (ScreenPtr pScreen);
|
|||
char *
|
||||
xf86ConnectorGetName(xf86ConnectorType connector);
|
||||
|
||||
/*
|
||||
* Using the desired mode information in each crtc, set
|
||||
* modes (used in EnterVT functions, or at server startup)
|
||||
*/
|
||||
|
||||
Bool
|
||||
xf86SetDesiredModes (ScrnInfoPtr pScrn);
|
||||
|
||||
#endif /* _XF86CRTC_H_ */
|
||||
|
|
|
@ -422,8 +422,28 @@ xf86RandR12CreateScreenResources (ScreenPtr pScreen)
|
|||
}
|
||||
else
|
||||
{
|
||||
mmWidth = pScreen->mmWidth;
|
||||
mmHeight = pScreen->mmHeight;
|
||||
xf86OutputPtr output = config->output[config->compat_output];
|
||||
xf86CrtcPtr crtc = output->crtc;
|
||||
|
||||
if (crtc && crtc->mode.HDisplay &&
|
||||
output->mm_width && output->mm_height)
|
||||
{
|
||||
/*
|
||||
* If the output has a mode and a declared size, use that
|
||||
* to scale the screen size
|
||||
*/
|
||||
DisplayModePtr mode = &crtc->mode;
|
||||
mmWidth = output->mm_width * width / mode->HDisplay;
|
||||
mmHeight = output->mm_height * height / mode->VDisplay;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Otherwise, just set the screen to 96dpi
|
||||
*/
|
||||
mmWidth = width * 25.4 / 96;
|
||||
mmHeight = height * 25.4 / 96;
|
||||
}
|
||||
}
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"Setting screen physical size to %d x %d\n",
|
||||
|
|
|
@ -76,5 +76,8 @@
|
|||
#define xf86CrtcSetScreenSubpixelOrder XF86NAME(xf86CrtcSetScreenSubpixelOrder)
|
||||
#define xf86ModeWidth XF86NAME(xf86ModeWidth)
|
||||
#define xf86ModeHeight XF86NAME(xf86ModeHeight)
|
||||
#define xf86OutputFindClosestMode XF86NAME(xf86OutputFindClosestMode)
|
||||
#define xf86SetSingleMode XF86NAME(xf86SetSingleMode)
|
||||
#define xf86SetDesiredModes XF86NAME(xf86SetDesiredModes)
|
||||
|
||||
#endif /* _XF86RENAME_H_ */
|
||||
|
|
Loading…
Reference in New Issue
Block a user