randr: set error numbers of resource types in RRExtenstionInit() (V2)
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=30367 Currently the ddx calls xf86RandR12Init() (-> RRScreenInit() -> RRInit() -> RRModeInit() -> RRCrtcInit() -> RROutputInit()) before RRExtensionInit() is called. This causes RRErrorBase being 0 while setting resource type error values (resource types: RROutput, RRMode and RRCrtc). The fix moves the setting of error values to own functions which are called in RRExtensionInit() to get the right RRErrorBase. V2: With header file Signed-off-by: Tobias Droste <tdroste@gmx.de> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
72a9c686d7
commit
c7e4222c9a
|
@ -354,6 +354,11 @@ RRExtensionInit (void)
|
|||
SRRScreenChangeNotifyEvent;
|
||||
EventSwapVector[RREventBase + RRNotify] = (EventSwapPtr)
|
||||
SRRNotifyEvent;
|
||||
|
||||
RRModeInitErrorValue();
|
||||
RRCrtcInitErrorValue();
|
||||
RROutputInitErrorValue();
|
||||
|
||||
#ifdef PANORAMIX
|
||||
RRXineramaExtensionInit();
|
||||
#endif
|
||||
|
|
|
@ -700,6 +700,12 @@ RRCrtcTransformSet (RRCrtcPtr crtc,
|
|||
extern _X_EXPORT Bool
|
||||
RRCrtcInit (void);
|
||||
|
||||
/*
|
||||
* Initialize crtc type error value
|
||||
*/
|
||||
extern _X_EXPORT void
|
||||
RRCrtcInitErrorValue (void);
|
||||
|
||||
/*
|
||||
* Crtc dispatch
|
||||
*/
|
||||
|
@ -762,6 +768,12 @@ RRModesForScreen (ScreenPtr pScreen, int *num_ret);
|
|||
*/
|
||||
extern _X_EXPORT Bool
|
||||
RRModeInit (void);
|
||||
|
||||
/*
|
||||
* Initialize mode type error value
|
||||
*/
|
||||
extern _X_EXPORT void
|
||||
RRModeInitErrorValue (void);
|
||||
|
||||
extern _X_EXPORT int
|
||||
ProcRRCreateMode (ClientPtr client);
|
||||
|
@ -856,6 +868,12 @@ ProcRRGetOutputPrimary (ClientPtr client);
|
|||
*/
|
||||
extern _X_EXPORT Bool
|
||||
RROutputInit (void);
|
||||
|
||||
/*
|
||||
* Initialize output type error value
|
||||
*/
|
||||
extern _X_EXPORT void
|
||||
RROutputInitErrorValue (void);
|
||||
|
||||
/* rrpointer.c */
|
||||
extern _X_EXPORT void
|
||||
|
|
|
@ -631,10 +631,19 @@ RRCrtcInit (void)
|
|||
RRCrtcType = CreateNewResourceType (RRCrtcDestroyResource, "CRTC");
|
||||
if (!RRCrtcType)
|
||||
return FALSE;
|
||||
SetResourceTypeErrorValue(RRCrtcType, RRErrorBase + BadRRCrtc);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize crtc type error value
|
||||
*/
|
||||
void
|
||||
RRCrtcInitErrorValue(void)
|
||||
{
|
||||
SetResourceTypeErrorValue(RRCrtcType, RRErrorBase + BadRRCrtc);
|
||||
}
|
||||
|
||||
int
|
||||
ProcRRGetCrtcInfo (ClientPtr client)
|
||||
{
|
||||
|
|
|
@ -260,6 +260,9 @@ RRModeDestroyResource (pointer value, XID pid)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize mode type
|
||||
*/
|
||||
Bool
|
||||
RRModeInit (void)
|
||||
{
|
||||
|
@ -268,10 +271,19 @@ RRModeInit (void)
|
|||
RRModeType = CreateNewResourceType (RRModeDestroyResource, "MODE");
|
||||
if (!RRModeType)
|
||||
return FALSE;
|
||||
SetResourceTypeErrorValue(RRModeType, RRErrorBase + BadRRMode);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize mode type error value
|
||||
*/
|
||||
void
|
||||
RRModeInitErrorValue(void)
|
||||
{
|
||||
SetResourceTypeErrorValue(RRModeType, RRErrorBase + BadRRMode);
|
||||
}
|
||||
|
||||
int
|
||||
ProcRRCreateMode (ClientPtr client)
|
||||
{
|
||||
|
|
|
@ -418,10 +418,19 @@ RROutputInit (void)
|
|||
RROutputType = CreateNewResourceType (RROutputDestroyResource, "OUTPUT");
|
||||
if (!RROutputType)
|
||||
return FALSE;
|
||||
SetResourceTypeErrorValue(RROutputType, RRErrorBase + BadRROutput);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize output type error value
|
||||
*/
|
||||
void
|
||||
RROutputInitErrorValue(void)
|
||||
{
|
||||
SetResourceTypeErrorValue(RROutputType, RRErrorBase + BadRROutput);
|
||||
}
|
||||
|
||||
#define OutputInfoExtra (SIZEOF(xRRGetOutputInfoReply) - 32)
|
||||
|
||||
int
|
||||
|
|
Loading…
Reference in New Issue