[PATCH xserver 4/7] glx: Use vnd layer for dispatch (v2)

Kyle Brenneman kbrenneman at nvidia.com
Thu Feb 1 21:44:06 UTC 2018

On 02/01/2018 02:31 PM, Adam Jackson wrote:
> On Wed, 2018-01-10 at 13:57 -0700, Kyle Brenneman wrote:
>> xorgGlxThunkRequest should be calling addXIDMap and removeXIDMap, not
>> the internal handlers.
> I'm not sure that can be right. If it did, and adding the map failed,
> there's no way to get the backend to clean up; at least, not the way
> GlxAddXIDMap is currently written. Perhaps that should be changed to
> call FreeResource on the XID if AddResource fails? (Like the one place
> in the whole server where that'd be correct...)
It works if the stub calls addXIDMap first, before calling into the 
vendor. Then, if addXIDMap fails, then the stub can return BadAlloc 
before the vendor has a chance to do anything that would require cleanup.

If the vendor returns an error code, then the stub would call 
removeXIDMap to clean up before returning.

That's also why the LEGAL_NEW_RESOURCE call has to be moved to the 
dispatch stub: The addXIDMap call happens before calling into the 
vendor, so by the time the vendor gets called, there's a resource 
defined for that XID and LEGAL_NEW_RESOURCE would fail.

>> The default branch there may need some additional
>> attention if it would handle any requests that create or destroy resources.
> It would. The only other vendorpriv extension I know of that does that
> is the underspecified and probably unimplementable
> GLX_SGIX_video_source though, so it's not really a big deal.
> - ajax

More information about the xorg-devel mailing list