[Xcb] [PATCH:xwininfo] Convert from Xlib to xcb

Alan Coopersmith alan.coopersmith at oracle.com
Mon Jun 14 08:16:47 PDT 2010

Vincent Torri wrote:
> imho, you can improve it a bit more by making Window_Has_Property() and
> Window_Is_Viewable() async (in clientwin.c). If the number of children
> is high, maybe it can speed it up.

Yeah, I didn't spend much time on clientwin.c since I hadn't figured out how
to test it yet, so did the straightforward conversion there.

Some other things I probably should have mentioned:

 - If you run xwininfo with the argument "-name foo" it starts at root and
   crawls down the tree looking at every window's name until it finds one
   named "foo" (via Window_With_Name() in dsimple.c) - in making this code
   asynchronous it will over-prefetch.   At each node in the tree that it
   visits, it calls xcb_get_wm_name & xcb_query_tree up front for all the
   children, and then goes through the results.   If it finds a match it
   then calls xcb_discard_reply for the rest of the cookies.   This trades
   the latency of the many waits for round trips in the Xlib version for a
   bit of extra bandwidth and some number of requests that are likely to be
   discarded in the end.   (They could be cached for later use if you called
   xwininfo with the -tree argument, but that is a bigger redesign than I
   was going for at this point, and I rarely use the -name argument anyway.)

 - xproto is still required for the Xfuncproto.h header (defines the
   compiler-portability macros like __X_NORETURN, _X_PRINTF, etc.)

 - xlib headers are still required for the cursorfont.h header to get
   the XC_crosshairs cursor used when you don't specify any window and
   it tells you to click on one (hence the thread I started last week).

	-Alan Coopersmith-        alan.coopersmith at oracle.com
	 Oracle Solaris Platform Engineering: X Window System

More information about the Xcb mailing list