Created attachment 37965 [details] [review]
This patch adds quite a bit more detail to the API documentation.
It assumes the small docs patch in bug 29599 has been applied.
There are probably some mistakes in here, but hopefully someone more "in the know" can fix those.
I think it's useful to give a lot more detail about what blocks and what doesn't, how buffering and flushing works, and even spell out some basic info about the X protocol. So I tried to put that kind of thing in here.
I copied a few lines of xcbext.h docs from the wiki, but mostly had to write new docs for it.
These docs could probably still use more info about how to use XCB with threads,
but I haven't sat down and tried to work that out, so I didn't document it.
Patch does not apply anymore unfortunately.
Also, when you rebase the patch, could you please add a note to xcb_send_request that vector has to have two empty slots before the beginning (ie. vector[-1] and vector[-2] must be addressable and writable). libxcb will use one of these slots for internal bookkeeping, and the other of those slots to fill in the extended request length if the request is big (in the bigreq extension sense).
In terms of threading, it's supposed to Just Work on pthread enabled platforms, nothing special required.