[Xcb] Re: Branch 'xspec' - xcb-proto

Alp Toker alp at atoker.com
Wed Mar 15 12:58:49 PST 2006


Jamey Sharp wrote:
> On Wed, Mar 15, 2006 at 12:01:19PM -0500, Jeremy A. Kolb wrote:
>> onnoff is the name given in the headers,  Since we want to be true to the 
>> protocol shouldn't this name remain unchanged?
> 
> Yes. The XML files are supposed to be a representation of the wire
> protocol: if a particular binding, like XCB or XNB, needs different
> naming conventions etc. it's expected to provide them in its code
> generator.

The string "onoff" is never sent down the wire. A boolean value is sent, 
and that boolean value describes whether event notification is enabled. 
"enabled" seems to be an accurate description of the field while "onoff" 
looks like a mistake in the spec. I have a more complete justification 
in my previous message. If I'm missing the point here, would be quite 
willing to revert the change.

> 
> Alp, you're doing a lot of work to change things that I'm not sure
> should be changed: XML-XCB attribute names (opcode->number), type names
> (WINDOW->Window), and occasional field names (onoff->enabled). Remember
> that XCB needs to use the same files, so if you ever want to merge your
> changes you need to be talking to the rest of us. What's your plan here?

The opcode -> number change was made to remove the need for a special 
case in server code. I'm quite surprised that you don't appreciate the 
simplification for the C server binding generator. It's no great deal, 
but it makes life just a little bit easier at no extra cost. Again, 
would be quite happy to revert this if I've got things wrong.

As far as the naming changes go, the rationale is that you can easily go 
from GContext to GCONTEXT, but not the reverse. It seems that without 
the changes I've made in the xspec branch, replacing the protocol header 
files will be quite unintuitive. If you don't replace them, you're still 
left maintaining a minimum of two copies of the protocol for another 20 
years.

Perhaps for you this is less of an issue, but non-C language bindings 
can't depend on anything in /usr/include/X11

You'll find that other changes I've made actually _remove_ xlibisms that 
have crept into the XCB protocol spec and have replaced or am in the 
process of replacing them with the actual name from the protocol 
documentation.

For example, "DontPropagate" doesn't look good to me, but it starts to 
look even worse when you realise that it was actually meant to be 
"DoNotPropagateMask" all along. They got it right, then you got it wrong 
when you decided to copy-and-paste from xlib instead of working from the 
X11 protocol documentation.

I'm working on identifying patterns to simplify bitmasks and valueparams 
right now. Replacing the union element with something closer to the 
desired type model is on my todo list; any extension is free to create a 
new xid type that is also a Drawable, and unions, while they might be a 
handy way of representing that relation in C, are certainly not what the 
X11 protocol specs have in mind and don't seem to belong in a protocol 
description. It just doesn't click.

Isn't XCB a great opportunity to get these things right?


More information about the Xcb mailing list