Always use server-<display>.xkm to avoid races when multiple servers start
Previously each server starting ran xkbcomp with the output set to <keymapname>.xkm, read it, then deleted it - which led to races if two servers were starting at the same time with the same keymap. Sun bug #6773816 Xorg uses the same xkm output file for compiled keymap file <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6773816>
This commit is contained in:
parent
1e4412abc4
commit
1cd894173e
|
@ -192,16 +192,8 @@ char *buf = NULL, keymap[PATH_MAX],xkm_output_dir[PATH_MAX];
|
|||
#ifdef WIN32
|
||||
char tmpname[PATH_MAX];
|
||||
#endif
|
||||
if ((names->keymap==NULL)||(names->keymap[0]=='\0')) {
|
||||
sprintf(keymap,"server-%s",display);
|
||||
}
|
||||
else {
|
||||
if (strlen(names->keymap) > PATH_MAX - 1) {
|
||||
ErrorF("[xkb] name of keymap (%s) exceeds max length\n", names->keymap);
|
||||
return False;
|
||||
}
|
||||
strcpy(keymap,names->keymap);
|
||||
}
|
||||
|
||||
snprintf(keymap, sizeof(keymap), "server-%s", display);
|
||||
|
||||
XkbEnsureSafeMapName(keymap);
|
||||
OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
|
||||
|
|
Loading…
Reference in New Issue
Block a user