How to make X11/Extension API changes?

Joe Krahn krahn at
Tue Sep 6 09:15:20 PDT 2005

How does one make API changes that need extended data structures without 
backwards compatibility problems? X was designed carefully enough that 
this is seldom an issue.

MS-Windows likes to have callers initialized a struct with a 
sizeof(struct) value, so structures can be extended, with additional 
data returned according to the structure size. It also uses -Ex suffixes 
for a one-time function prototype change.

X solves this partly by protocol versioning. But, what is the right way 
to make structure/function changes at the API level?

For example:

Can XListInputDevices contain a pointer to an extended XValuatorInfo 
structure, as long as the initial structure members match the current 

XInput Device Controls are 'almost' extensible as-is, if controlType 
were changed from int to Atom, which are binary compatible. What is the 
best way to update a function like this without something weird like 
adding an -Ex suffix?


More information about the xorg mailing list