Revert "xfree86: Remove broken RANDR disabling logic (v3)"

Tsk. This broke vesa for me, the rrGetScrPriv in InitOutput will crash
if randr's screen private key hasn't been initialized yet. That seems
dumb, but let's not leave it broken.

This reverts commit c08d7c1cdd.
This commit is contained in:
Adam Jackson 2018-01-24 15:24:00 -05:00
parent c08d7c1cdd
commit 5cb330cd5d
8 changed files with 36 additions and 7 deletions

View File

@ -305,6 +305,8 @@ extern _X_EXPORT Bool
xf86GetModInDevEnabled(void);
extern _X_EXPORT Bool
xf86GetAllowMouseOpenFail(void);
extern _X_EXPORT void
xf86DisableRandR(void);
extern _X_EXPORT CARD32
xorgGetVersion(void);
extern _X_EXPORT CARD32

View File

@ -634,6 +634,7 @@ typedef enum {
FLAG_XINERAMA,
FLAG_LOG,
FLAG_RENDER_COLORMAP_MODE,
FLAG_RANDR,
FLAG_IGNORE_ABI,
FLAG_ALLOW_EMPTY_INPUT,
FLAG_USE_DEFAULT_FONT_PATH,
@ -682,6 +683,8 @@ static OptionInfoRec FlagOptions[] = {
{0}, FALSE},
{FLAG_RENDER_COLORMAP_MODE, "RenderColormapMode", OPTV_STRING,
{0}, FALSE},
{FLAG_RANDR, "RandR", OPTV_BOOLEAN,
{0}, FALSE},
{FLAG_IGNORE_ABI, "IgnoreABI", OPTV_BOOLEAN,
{0}, FALSE},
{FLAG_USE_DEFAULT_FONT_PATH, "UseDefaultFontPath", OPTV_BOOLEAN,
@ -824,6 +827,15 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
}
}
#ifdef RANDR
xf86Info.disableRandR = FALSE;
xf86Info.randRFrom = X_DEFAULT;
if (xf86GetOptValBool(FlagOptions, FLAG_RANDR, &value)) {
xf86Info.disableRandR = !value;
xf86Info.randRFrom = X_CONFIG;
}
#endif
#ifdef GLXEXT
xf86Info.glxVisuals = XF86_GlxVisualsTypical;
xf86Info.glxVisualsFrom = X_DEFAULT;

View File

@ -117,6 +117,8 @@ xf86InfoRec xf86Info = {
.miscModInDevEnabled = TRUE,
.miscModInDevAllowNonLocal = FALSE,
.pmFlag = TRUE,
.disableRandR = FALSE,
.randRFrom = X_DEFAULT,
#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS)
.forceInputDevices = FALSE,
.autoAddDevices = TRUE,

View File

@ -1458,6 +1458,13 @@ xf86GetAllowMouseOpenFail(void)
return xf86Info.allowMouseOpenFail;
}
void
xf86DisableRandR(void)
{
xf86Info.disableRandR = TRUE;
xf86Info.randRFrom = X_PROBED;
}
CARD32
xf86GetModuleVersion(void *module)
{

View File

@ -77,7 +77,6 @@
#include "xf86Xinput.h"
#include "xf86InPriv.h"
#include "picturestr.h"
#include "randrstr.h"
#include "xf86Bus.h"
#ifdef XSERVER_LIBPCIACCESS
@ -811,12 +810,10 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
SubPixelUnknown);
}
#ifdef RANDR
/*
* If the driver hasn't set up its own RANDR support, install the
* fallback support.
*/
if (!rrGetScrPriv(xf86Screens[i]->pScreen))
if (!xf86Info.disableRandR)
xf86RandRInit(screenInfo.screens[scr_index]);
xf86Msg(xf86Info.randRFrom, "RandR %s\n",
xf86Info.disableRandR ? "disabled" : "enabled");
#endif
}

View File

@ -1643,8 +1643,12 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
}
/* Lookup each mode */
#ifdef RANDR
if (!xf86Info.disableRandR
#ifdef PANORAMIX
if (noPanoramiXExtension)
&& noPanoramiXExtension
#endif
)
validateAllDefaultModes = TRUE;
#endif

View File

@ -81,6 +81,8 @@ typedef struct {
Bool miscModInDevAllowNonLocal;
Bool useSIGIO; /* Use SIGIO for handling DRI1 swaps */
Bool pmFlag;
Bool disableRandR;
MessageType randRFrom;
MessageType iglxFrom;
XF86_GlxVisuals glxVisuals;
MessageType glxVisualsFrom;

View File

@ -771,6 +771,9 @@ xf86CrtcScreenInit(ScreenPtr screen)
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 */