While X.Org Servger 1.9
was released less than a week ago (heck, it's only been four days since releasing om time
), the first interesting patch for X.Org Server 1.10
is already queued up and on the X.Org development mailing list for discussion. This patch, which was written by Tiago Vignatti and Fernando Carrijo, provides the "thread-ification" of the X Server input event generation code. Rather than being bound to the same thread as the X Server, the input event code with this patch is now running in its own thread, but this may only be the start of things to come with finally multi-threading the X.Org Server.
Nokia's Tiago Vignatti originally mentioned his and Fernando's threaded input work on the X.Org mailing list earlier this month
during another input-related discussion and mentioned their input thread branch
of the X Server where their work was happening. Though in terms of moving the input event generation to its own thread, this isn't being done for performance reasons but rather to better the code by avoiding the use of SIGIO/SIGPOLL with signal handling. This threading work is being targeted at X Servers running on Linux, but it may end up benefiting other platforms too. More interesting, Tiago looks at this initial input work as "opening space to other thread works" like moving X rendering or other tasks to an independent thread as well. Basically
there would be one thread for dispatch and the core object model, one thread for input, and another thread for the GPU. Threading the X Server is something that has interested Tiago since at least 2008 when he talked about it
. There was also an effort to multi-thread the X11R6 Server more than a decade ago, but those attempts had failed.
The current X input event generation thread patches can be found in this mailing list
. The patch right now is actually only a few hundred lines of code to implement, but more threading work will hopefully come for other areas of the X Server if other developers provide positive feedback. This patch at least should be in X.Org Server 1.10 and for now can be enabled by configuring the xorg-server build process with a new --enable-input-thread
build option. Another major change that may also happen with the xorg-server 1.10 release is moving the drivers back into the X Server
, but that's a heated issue and something that's to be talked about next month at the 2010 X Developers' Summit
in Toulouse, which we will providing coverage.