Commit a3d73ba2 authored by Keith Packard's avatar Keith Packard
Browse files

Allow outputs to be explicitly enabled in config, overriding detect.

Option "Enable" "True" will force the server to enable an output at startup
time, even if the output is not connected. This also causes the default
modes to be added for this output, allowing even sync ranges to be used to
pick out standard modes.
parent f4a8e54c
......@@ -427,15 +427,29 @@ xf86OutputSetMonitor (xf86OutputPtr output)
}
static Bool
xf86OutputEnabled (xf86OutputPtr output)
xf86OutputEnabled (xf86OutputPtr output)
{
/* Check to see if this output was disabled in the config file */
if (xf86ReturnOptValBool (output->options, OPTION_ENABLE, TRUE) == FALSE ||
xf86ReturnOptValBool (output->options, OPTION_DISABLE, FALSE) == TRUE)
Bool enable, disable;
/* check to see if this output was enabled in the config file */
if (xf86GetOptValBool (output->options, OPTION_ENABLE, &enable) && enable)
{
xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
"Output %s enabled by config file\n", output->name);
return TRUE;
}
/* or if this output was disabled in the config file */
if (xf86GetOptValBool (output->options, OPTION_DISABLE, &disable) && disable)
{
xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
"Output %s disabled by config file\n", output->name);
return FALSE;
}
return TRUE;
/* otherwise, enable if it is not disconnected */
enable = output->status != XF86OutputStatusDisconnected;
xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
"Output %s %sconnected\n", output->name, enable ? "" : "dis");
return enable;
}
static Bool
......@@ -1225,7 +1239,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
*/
output->status = (*output->funcs->detect)(output);
if (output->status == XF86OutputStatusDisconnected)
if (!xf86OutputEnabled (output))
{
xf86OutputSetEDID (output, NULL);
continue;
......@@ -1527,8 +1541,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
xf86OutputPtr output = config->output[o];
modes[o] = NULL;
enabled[o] = (xf86OutputEnabled (output) &&
output->status != XF86OutputStatusDisconnected);
enabled[o] = xf86OutputEnabled (output);
}
/*
......@@ -1573,8 +1586,20 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
{
xf86OutputPtr output = config->output[o];
if (enabled[o] && !modes[o])
modes[o] = xf86ClosestMode (output, target_mode, target_rotation, width, height);
if (enabled[o])
{
if (!modes[o])
modes[o] = xf86ClosestMode (output, target_mode,
target_rotation, width, height);
if (!modes[o])
xf86DrvMsg (scrn->scrnIndex, X_ERROR,
"Output %s enabled but has no modes\n",
output->name);
else
xf86DrvMsg (scrn->scrnIndex, X_INFO,
"Output %s using initial mode %s\n",
output->name, modes[o]->name);
}
}
/*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment