[Xcb] About next release of xcb/util

Josh Triplett josh at joshtriplett.org
Thu Mar 25 08:43:28 PDT 2010


On Thu, Mar 25, 2010 at 08:50:07AM +0100, Julien Danjou wrote:
> Josh Triplett <josh at joshtriplett.org> writes:
> 
> > http://lists.freedesktop.org/archives/xcb/2006-October/thread.html#2193
> > (thread "porting Xft and pango to XCB").
> 
> Thanks.
> 
> > To solve the second issue in general, I'd like to propose a key strategy
> > for porting libraries like Xft from Xlib to XCB without duplication:
> > Start requiring Xlib/XCB for these ports, and depend on libX11-xcb.
> > 
> > Then, port the internals of the libraries to use XCB, and do nothing
> > with a Display except call XGetXCBConnection or pass the Display to
> > another library that uses Xlib.  If a library only does the former, then
> > ideally we can in the future pass an xcb_connection_t instead, and make
> > Xlib callers call XGetXCBConnection themselves.  This strategy will
> > avoid code duplication; it will also make it trivial to, someday, build
> > a version that doesn't bother supporting Xlib.
> 
> It seems like a really good idea. But does not that requires Xlib to be
> build with XCB support? Is that a standard nowadays?

Yes, it would require an Xlib built with XCB support, including the
libX11-xcb library that exposes that XCB support.

Back when we still had locking assertions that regularly triggered on
questionable code, some distros compiled --without-xcb to avoid the
pain.  However, with the new handoff-based implementation, all the
distros I've looked at build with XCB.

If any distros still build --without-xcb, we should figure out why and
try to address that.  Long-term, I'd like to try to phase out
--without-xcb.

Trying to support both Xlib and XCB in the same library without relying
on Xlib/XCB would necessarily require duplicate code paths, one using
XCB calls and one using Xlib calls; that seems like a losing plan.
Libraries like Cairo, designed to have many different backends with the
same frontend API, could manage such a design; however, even there the
pain of having two interfaces to X proves painful, and current Cairo has
a --with-xlib-xcb option that makes the Xlib backend call
XGetXCBConnection and use the XCB backend. :)

- Josh Triplett


More information about the Xcb mailing list