GTK-XCB is in progress



 
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.

These XCB backends are built on the 1.0 RC3 (0.9.93) release of xcb-proto and libxcb(http://xcb.freedesktop.org/dist/), 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.

These XCB backends are not built by default, and you must explicitly use the configuration option:
 * Xft: --enable-xcb
 * pango: --enable-xcb
 * gtk: --with-gdktarget=xcb

You can get all my xcb-porting work from  "http://gtk-xcb.svn.sourceforge.net/viewvc/gtk-xcb/" , then try to build them. If all works well, you can get libgtk-xcb-2.0.so and libgdk-xcb-2.0.so finally.

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.

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 :(

Followings are the next steps :

* event handling
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  make the window partially obscured, and  fully visible many times, the area then does not redraw any more.

* error handling.
Build a library atop libxcb to provide such functions as XSetErrorHandler and XSetIOErrorHandler.

* Key handling. 
Rewrite XKeysymToString and XStringToKeysym in a library built on XCB, to provide the transformation between keyname and keyvalue.

* GC contents caches
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?

Anyway, I'd appreciate any advice/pointers you could provide, poking at the gdk-xcb backends.
 
 
Jianjun


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]