[PATCH wayland] introduce new headers wayland-client/server-core.h

Bill Spitzak spitzak at gmail.com
Wed Apr 29 09:06:13 PDT 2015


On 04/29/2015 12:21 AM, Giulio Camuffo wrote:
> 2015-04-29 2:17 GMT+03:00 Bill Spitzak <spitzak at gmail.com>:
>>>>>>> The problem is when you have an extension.xml, and generate
>>>>>>> extension-client-protocol.h. Then you have some preexisting code
>>>>>>> including that and relying on it including wayland-client.h and then
>>>>>>> wayland-client-protocol.h, and if you use something from that it will
>>>>>>> not build anymore, because wayland-client-core.h doesn't include it.
>>
>>
>> I think it is acceptable to say that the code has to be fixed in this case.
>> It will only happen if they call a function that wayland-client.h defines
>> but is not in wayland-client-core.h. You are being much too concerned about
>> back compatibility here.
>
> No, i completely disagree. Weston wouldn't build, like probably
> virtually any other project using some extension. That is not
> acceptable.

I just tested commenting out the "#include "wayland-client.h" from 
wayland-client-protocol.h and both wayland and weston built with no 
error. And that change is far more drastic than what I propose as it 
does not include the stuff that would be in this wayland-client-core.h file.

It is pretty easy to see using git grep that most (and perhaps all) 
files that include a protocol.h also directly include wayland-client.h. 
Some of them are indirectly through the window.h.

> Just to be clear, are you suggesting the scanner should generate two
> headers for an xml, one including the old headers and one including
> the core ones? I'm not sure i see the advantage of this compared to
> the option...

The back-compatibility one would be hand-written, not generated. It is 
only needed for existing protocols. However I don't feel this is necessary.

Just to be clear, my proposal is:

   wayland-client.h : hand-written, includes:
	wayland-client-core.h
	wayland-client-protocol.h
	deprecated api

   wayland-client-core.h : hand-written, includes
	wl_event_queue, wl_proxy, etc

   *-protocol.h : generated, includes
	inline wrappers for messages and events
	wayland-client-core.h



More information about the wayland-devel mailing list