CVSROOT: /home/x-cvs
Module name: xc
Changes by: [EMAIL PROTECTED] 02/12/21 10:49:04
Log message:
680. Correct problem when the server prints the name of a 'private
xkb action' in a format that xkbcomp cannot understand, and
was causing problems when calling XkbGetKeyboard (Ivan Pascal).
Message from Ivan Pascal describing the problem below:
--
Hi,
> But there is yet another (probably) simple problem that I have noticed,
> and just did patches to not allow xf86cfg to crash, when it starts, it
> tries to load the current xkb configuration, in previous versions of
> XFree86 the current code in
> xc/programs/Xserver/hw/xfree86/xf86cfg/keywboard-cfg.c:InitializeKeyboard()
> was working fine, but now it always timeouts (actually, the timeout
> check and several tries was added because an already resolved problem
> with signals and interrupted reads when forking the Xserver to call
> xkbcomp).
Fortunatly it was a simple bug.
The thing is when you call XkbGetKeyboard the server converts a current
xkb description to the text form, calls the xkbcomp and feeds it with this
text, reads an XKM format file that the xkbcomp produces and finally sends
this data to application. (I didn't know it is so complicated. I thought
the server simply sends its internal structures. :( )
The problem is (was) there are some bugs in the procedures which write
the xkb format file. And in some case they produce the text that the xkbcomp
can't understand. (I say 'bugs' becouse I suspect there are some other besides
one I caught.)
In problem you describe the bug is a printing the name of 'the private xkb
action'. As you know there are xkb actions recently added for server actions
such as a VT mode switching. And in original files they looks like
Private(type=0x86, data="...")
and it is the form that the xkbcomp understands.
But the 'reverse procudures' print it as
0x86(type=0x86, data[0]=...)
As the result the xkbcomp can't read the text description, doesn't produce
the XKM file and the XkbGetKeyboard procedure fails.
I attached a patch. As you can see it is simplest. :)
--
Ivan U. Pascal | e-mail: [EMAIL PROTECTED]
Administrator of | Tomsk State University
University Network | Tomsk, Russia
--
Thanks to Ivan Pascal for fixing this problem.
Modified files:
xc/lib/xkbfile/:
xkbtext.c
xc/programs/Xserver/hw/xfree86/:
CHANGELOG
Revision Changes Path
3.11 +1 -1 xc/lib/xkbfile/xkbtext.c
3.2459 +4 -1 xc/programs/Xserver/hw/xfree86/CHANGELOG
_______________________________________________
Cvs-commit mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/cvs-commit