[Xcb] xcb and protocol versions

Jeremy Kolb jkolb at brandeis.edu
Thu Feb 22 16:08:21 PST 2007


Peter Hutterer wrote:
> 
> On 23/02/2007, at 05:48 , Jeremy A. Kolb wrote:
>> I am unsure how to handle the case where the client uses a
>> request from an older version of the extension that has now changed its
>> signature in a later version of xcb.
> 
> don't change it. If you decide to fill existing padding fields with
> data, that is fine because the client won't access them. if you start
> adding bytes, you will most likely get the client out of sync. there's
> probably some stuff you can do with fake padding. say you have a request
> with a length field and a count variable. count gives you the number of
> bytes after the 32 standard. you could change length but not count,
> resulting in fake padding bytes being added at the end. for newer
> versions, you can then stuff data in there. not sure it's wise to go
> there though.
> 
> If you want to extend a request, you have to have version negotiation
> and send back exactly what the client wants, depending on the version
> the client is running.
> 
> Cheers,
>   Peter
> 
> -- 
> Multi-Pointer X Server
> http://wearables.unisa.edu.au/mpx
> 

Sorry I wasn't clear.  I'm not writing an extension, I'm implementing
protocol version support in xcb.

An example of my concern is:

We have an extension Ext at version 1.0 and we have a request named func
that sends a CARD16 down the wire.
XCB would generate the following functions;

xcb_ext_func(..., CARD16)

Now if we have version 1.1 and let's say we still have request func but
it adds a CARD8 or something then we would have the function:

xcb_ext_func(..., CARD16, CARD8)

Will we ever run into a case like this or are people prohibited from
doing things like this?



More information about the xorg mailing list