<div>&nbsp;</div>
<div>I am always working on the xcb port of gtk. So far most common gtk applications can run well atop the gdk-xcb backend. As the dependency of gtk, Pango and Xft are ported as well.</div>
<p>These XCB backends are built on the 1.0 RC3 (0.9.93) release of xcb-proto and libxcb(<a href="http://xcb.freedesktop.org/dist/">http://xcb.freedesktop.org/dist/</a>), as well as the latest development version of xcb-util(git://anongit.freedesktop.org/git/xcb/util). Maybe the utility libraries are unstable, but I have employed it.
</p>
<p>These XCB backends are not built by default, and you must explicitly use the configuration option:<br>&nbsp;* Xft:&nbsp;--enable-xcb<br>&nbsp;* pango:&nbsp;--enable-xcb<br>&nbsp;* gtk:&nbsp;--with-gdktarget=xcb</p>
<p>You can get all my xcb-porting work from&nbsp; &quot;<a href="http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/">http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/</a>&quot; , then try to build them. If all works well, you can get 
<a href="http://libgtk-xcb-2.0.so">libgtk-xcb-2.0.so</a> and <a href="http://libgdk-xcb-2.0.so">libgdk-xcb-2.0.so</a> finally.</p>
<p>GTK-XCB is now entirely XCB based, claiming the full benefits of XCB. I have not taken codes sharing into account between the two X backends, perhaps it brings a huge maintenance burden, maintaining two copies of that that differ only in their interface to the X protocol.
</p>
<p>I have used gtkperf to test the gdk-xcb performance on PC, but the benchmark data shows gdk-xcb is a bit slow than gdk-x11 :(</p>
<p>Followings are the next steps :</p>
<p>* event handling<br>There is still a bug in window redraw. Originally the area in window does redraw when its window content is fully visible after the overlapping window disappear. But if you repeat to&nbsp; make the window partially obscured, and&nbsp; fully visible many times, the area then does not redraw any more.
</p>
<p>* error handling. <br>Build a library atop libxcb to provide such functions as XSetErrorHandler and XSetIOErrorHandler.</p>
<p>* Key handling.&nbsp;<br>Rewrite XKeysymToString and XStringToKeysym in a library built on XCB, to provide the transformation between keyname and keyvalue.</p>
<p>* GC contents caches <br>XCB does not cache the GC contents on client-side. Maybe should I cache the gc values in gdk-xcb backend to implement gdk_gc_get_values?</p>
<div>Anyway, I'd appreciate any advice/pointers you could provide, poking at the gdk-xcb backends.</div>
<div>&nbsp;</div>
<div>Jianjun<br>&nbsp;</div>