On Tue, 28 Sep 2010 18:44:53 +0200, Tobias Droste <[email protected]> wrote: > Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=30367 > > Currently the ddx calls RROutputInit() before RRExtensionInit() is > called. This causes RRErrorBase being 0 while setting resource type > error (resource types RROutput, RRMode and RRCrtc). > The fix moves the setting of error numbers to RRExtensionInit() to get > the right RRErrorBase. > > Signed-off-by: Tobias Droste <[email protected]>
Reviewed-by: Keith Packard <[email protected]> > --- > randr/randr.c | 5 +++++ > randr/rrcrtc.c | 11 ++++++++++- > randr/rrmode.c | 14 +++++++++++++- > randr/rroutput.c | 11 ++++++++++- > 4 files changed, 38 insertions(+), 3 deletions(-) > > diff --git a/randr/randr.c b/randr/randr.c > index f52a46a..6077705 100644 > --- a/randr/randr.c > +++ b/randr/randr.c > @@ -354,6 +354,11 @@ RRExtensionInit (void) > SRRScreenChangeNotifyEvent; > EventSwapVector[RREventBase + RRNotify] = (EventSwapPtr) > SRRNotifyEvent; > + > + RRModeInitErrorValue(); > + RRCrtcInitErrorValue(); > + RROutputInitErrorValue(); > + > #ifdef PANORAMIX > RRXineramaExtensionInit(); > #endif > diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c > index 14f6e45..839f3cd 100644 > --- a/randr/rrcrtc.c > +++ b/randr/rrcrtc.c > @@ -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() > +{ > + SetResourceTypeErrorValue(RRCrtcType, RRErrorBase + BadRRCrtc); > +} > + > int > ProcRRGetCrtcInfo (ClientPtr client) > { > diff --git a/randr/rrmode.c b/randr/rrmode.c > index deddd3c..361d17d 100644 > --- a/randr/rrmode.c > +++ b/randr/rrmode.c > @@ -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() > +{ > + SetResourceTypeErrorValue(RRModeType, RRErrorBase + BadRRMode); > +} > + > int > ProcRRCreateMode (ClientPtr client) > { > diff --git a/randr/rroutput.c b/randr/rroutput.c > index 937b14d..1d65c11 100644 > --- a/randr/rroutput.c > +++ b/randr/rroutput.c > @@ -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() > +{ > + SetResourceTypeErrorValue(RROutputType, RRErrorBase + BadRROutput); > +} > + > #define OutputInfoExtra (SIZEOF(xRRGetOutputInfoReply) - 32) > > int > -- > 1.7.1 > -- [email protected]
pgpKl8CkMXJwo.pgp
Description: PGP signature
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
