Last change to non-XCB libX11 breaks KDE

Kean Johnston kean at armory.com
Tue Jul 17 14:26:34 PDT 2007


> Does your Xlib support LOCALCONN but your server not?
No, both suppot LOCALCONN.

> (And you'll notice this change isn't the first to do this manipulation
>  - the code already had the fallback from :0 to hostname:0 before I added
>  unix:0 as the intermediate step.)
Then both are wrong and contrary to their own documentation. The
effect of changing that information is that XDisplayString() will
return a different value to XDisplayName(). The documentation I was
able to find for XDisplayString says:

XDisplayString(displayptr) -> string                         [procedure]
DisplayString(displayptr) -> string                          [procedure]
         XDisplayString returns the string  name of the display  referred
         to by displayptr  (as passed  to * XOpenDisplay or  held in  the
         Unix $DISPLAY environment variable.)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

         This can  be useful  in programs  which use  the Unix  *?sysfork
         procedure and wish to open a connection in the child process  to
         the same display used in the parent. XDisplayString can be  used
         by the parent to get the name of the display, which can then  be
         used in a call to * XOpenDisplay by the child.

         DisplayString is a synonym for XDisplayString.

By modifying the fullname to insert the hostname it creates an
inconsistency, which thwarts the purpose of XDisplayString()
completely. Either that or XDisplayString() should eb changed to
simply return the value of $DISPLAY, like XDisplayName() does,
and not the "canonical" name computed by _X11TransConnectDisplay().

Kean




More information about the xorg mailing list