Mercurial > illumos > illumos-gate
changeset 9809:decd140e1fad
6846252 hald-probe-xkb crashing on snv115 causing really poor selection of xkb layouts.
author | Lin Guo - Sun Microsystems <Lin.Guo@Sun.COM> |
---|---|
date | Mon, 08 Jun 2009 07:59:22 +0800 |
parents | bab459bb4db2 |
children | 0bddf3c4f9fb |
files | usr/src/cmd/hal/probing/xkb/probe-xkb.c |
diffstat | 1 files changed, 18 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/cmd/hal/probing/xkb/probe-xkb.c Sat Jun 06 17:36:42 2009 -0700 +++ b/usr/src/cmd/hal/probing/xkb/probe-xkb.c Mon Jun 08 07:59:22 2009 +0800 @@ -235,17 +235,15 @@ /* record default entry if/when found */ if (*type == '*') { if (defkeymap == NULL) { - defkeymap = keymap; - defmodel = model; - defxkblay = xkblay; + defkeymap = strdup(keymap); + defmodel = strdup(model); + defxkblay = strdup(xkblay); } } else if (atoi(type) == kb_type) { - if (*type == '*') { - if (defkeymap == NULL) { - defkeymap = keymap; - defmodel = model; - defxkblay = xkblay; - } + if (*layout == '*') { + defkeymap = strdup(keymap); + defmodel = strdup(model); + defxkblay = strdup(xkblay); } else if (atoi(layout) == kb_layout) { found_keytable = 1; break; @@ -329,12 +327,18 @@ goto out; } - libhal_changeset_set_property_string(cs, - "input.x11_options.XkbModel", xkbmodel); - libhal_changeset_set_property_string(cs, - "input.x11_options.XkbLayout", xkblayout); + /* + * If doesn't find matching entry in xkbtable.map, using default + * values setting in 10-x11-input.fdi + */ + if ((xkbmodel != NULL) && (xkblayout != NULL)) { + libhal_changeset_set_property_string(cs, + "input.x11_options.XkbModel", xkbmodel); + libhal_changeset_set_property_string(cs, + "input.x11_options.XkbLayout", xkblayout); - libhal_device_commit_changeset(ctx, cs, &error); + libhal_device_commit_changeset(ctx, cs, &error); + } ret = 0;