[PATCH] Use cached XKB keymap when rules haven't changed

Dan Nicholson dbn.lists at gmail.com
Mon Nov 24 06:50:57 PST 2008


On Sun, Nov 23, 2008 at 9:21 PM, Peter Hutterer
<peter.hutterer at who-t.net> wrote:
> On Sun, Nov 23, 2008 at 06:06:54PM -0800, Dan Nicholson wrote:
>> Rather than compiling a new keymap every time XkbInitKeyboardDeviceStruct
>> is called, cache the previous keymap and reuse it if the rules have not been
>> changed. When XkbSetRulesDflts is called, the cached map is invalidated if
>> it differs from the previous default rules.
>>
>> The map is also invalidated if named components are supplied. This could be
>> fixed by caching Ktcsg from the previous run and comparing.
>
> looks good, but - it doesn't work. Caching and re-using seems to work but it
> breaks different keymaps for different devices.

Thanks for testing. I'll have to dig in a little more and see why that
would happen. I was mostly watching whether the map was cached at the
right time, but not really playing with different keymaps.

> Just configure one keyboard to have a different layout in your fdi file (e.g.
> de) and start a plain server and xterm. In current master, the keyboard has
> the specified layout, with your patch it has the default layout (us).
> Can you please test and fix this? Thanks.

Does the log report the wrong layout, or do you just find the wrong
keymap has been applied? If you run with -logverbose, does it report
that the cached keymap is used? I'll take a look, but I'd like to make
sure that I'm seeing the same issue you are.

--
Dan



More information about the xorg mailing list