[Customdrawn] LazClock exercise

Giuliano Colla giuliano.colla at fastwebnet.it
Sun Apr 1 18:28:25 CEST 2012

Il 01/04/2012 13:47, Giuliano Colla ha scritto:
> I've run some comparisons to evaluate lazclock performance with 
> different widgetsets, and options.
> I leave it to you to draw your conclusions.

I don't believe it is fair to raise a problem without trying to offer a 
X11 backend crawls too slow to be of any use. But rethinking to the full 
picture I believe that the cause and the solution are just under our eyes.

Being Xlib the lowest level interface to the display, all the work must 
be done in the main thread.
Doing things in sequence means being slow. All other widgetsets, and 
backends, take advantage of higher level native functions, so that a lot 
of work is done in other threads, in parallel as much as possible.
But reflecting over it, it came to my mind that Xlib isn't the only way 
to take advantage an X11 server: X11 provides Xt, the X toolkit!

Xt is a toolkit much like GTK or Qt or Windows widgets, provides similar 
functionality (at least the basic ones), except for one important thing: 
Xt widgets are just empty abstract containers. They must be custom 
drawn! You may decide that a widget is a button, and request a 
ButtonPress CallBack, but it's up to you to paint the button in the Up 
and Down state. Just what is needed for a customdrawn widgetset!

Both Qt and GTK can't take advantage of it, because they both are born 
On the contrary, Motif, which is Unix-only, uses Xt. But in an X11 
backend we don't need to be multiplatform. We may take advantage just of 
what X11 offers.
X11 doesn't provide timers, Xt does. X11 doesn't provide a MainLoop, Xt 
does, but permits to override it, X11 doesn't tell that a button has 
been pressed, Xt does, and so on.
The ugly X-only applications which come with each X11 installations 
(such as Xclock, xsetfonts, xvidtune, etc.) are based on Xt, with a few 
quick and dirty custom drawn widgets, no antialiasing enabled, etc., but 
this means that Xt is always available as a part of all X11 distributions:

[colla at localhost XToolkit]$ ldd /usr/bin/xvidtune
         linux-gate.so.1 =>   (0x008a5000)
         libXxf86vm.so.1 =>  /usr/lib/libXxf86vm.so.1 (0x00101000)
         libXaw.so.7 =>  /usr/lib/libXaw.so.7 (0x001eb000)
         libXmu.so.6 =>  /usr/lib/libXmu.so.6 (0x0012e000)
         *libXt.so.6 =>  /usr/lib/libXt.so.6*  (0x0018c000)
         libX11.so.6 =>  /usr/lib/libX11.so.6 (0x00916000)
         libc.so.6 =>  /lib/libc.so.6 (0x005c8000)
         libXext.so.6 =>  /usr/lib/libXext.so.6 (0x00c0a000)
         libXpm.so.4 =>  /usr/lib/libXpm.so.4 (0x03ec0000)
         libSM.so.6 =>  /usr/lib/libSM.so.6 (0x00c29000)
         libICE.so.6 =>  /usr/lib/libICE.so.6 (0x00cb7000)
         libxcb.so.1 =>  /usr/lib/libxcb.so.1 (0x00a54000)
         libdl.so.2 =>  /lib/libdl.so.2 (0x00754000)
         libgcc_s.so.1 =>  /lib/libgcc_s.so.1 (0x007a4000)
         /lib/ld-linux.so.2 (0x005a7000)
         libuuid.so.1 =>  /lib/libuuid.so.1 (0x00c1d000)
         libXau.so.6 =>  /usr/lib/libXau.so.6 (0x00a4f000)

Taking advantage of Xt would mean IMHO, that only part of the work done 
up to now in customdrawn should be revised, and only as far a X11 
backend is concerned, making it much more similar to other backends.

I attach a list of the man pages related to Xt, just to give an idea of 
the available functionality.

I could take care of it, beginning with only the main form, and leaving 
all the rest as it is, (which won't give any advantage, but will permit 
to familiarize with the tool), and then taking care of the widgets, as 
long as I learn how to deal with a new beast.

What do you think about it?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/customdrawn/attachments/20120401/ab7c5f2e/attachment-0002.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ManPages.txt
URL: <http://lists.lazarus-ide.org/pipermail/customdrawn/attachments/20120401/ab7c5f2e/attachment-0002.txt>

More information about the Customdrawn mailing list