How to distinguish Window and Pixmap ID
Peter Harris
pharris at opentext.com
Wed Mar 18 07:23:03 PDT 2009
Ren, Zhaohan wrote:
> Does anyone have a better way?
A less hacky (but slower and more bandwidth intensive) way would be to
call GetGeometry on the drawable. If x, y, or border-width are > 0, then
it's a window. Otherwise, take the root window in the reply and use it
to walk the entire tree using multiple calls to QueryTree[1]. If you
find the drawable ID in the tree, it's a window. Otherwise, it's a pixmap.
The *best* way (as Adam hinted) to determine if a drawable is a window
or a pixmap is to have two different entry points in your library:
PostProcessWindow and PostProcessPixmap (instead of
PostProcessDrawable). The application that calls your library will know
which one to use. This is the only method that requires zero round-trips
to the server.
Peter Harris
[1] xcb_query_tree will allow you to issue multiple requests at once,
saving round-trip delays compared to XQueryTree. But it will still be
somewhat slow.
--
Open Text Connectivity Solutions Group
Peter Harris http://www.opentext.com/connectivity
Research and Development Phone: +1 905 762 6001
pharris at opentext.com Toll Free: 1 877 359 4866
More information about the xorg-devel
mailing list