summaryrefslogtreecommitdiff
path: root/sway/commands/input.c
diff options
context:
space:
mode:
authorBrian Ashworth <[email protected]>2019-06-05 14:16:37 -0400
committerSimon Ser <[email protected]>2019-06-09 20:13:22 +0300
commit5b1a8d62b9c8fa7c25b70e01910abd761fae9855 (patch)
tree173ef18191acf9dfb84b3bb76c43ee8108f4cd89 /sway/commands/input.c
parentbe2d2a299a6f854f0494f84169ef82ad5b31a917 (diff)
config/input: validate xkb keymap before storing
This allows for an optional validation stage when storing an input config. Currently, only the xkb keymap is validated. If storing the delta input config will result in any invalid xkb keymaps, the input config will not be stored and error will be populated with the first line of the xkbcommon log.
Diffstat (limited to 'sway/commands/input.c')
-rw-r--r--sway/commands/input.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/sway/commands/input.c b/sway/commands/input.c
index 23a6644f..d95c4baf 100644
--- a/sway/commands/input.c
+++ b/sway/commands/input.c
@@ -88,9 +88,10 @@ struct cmd_results *cmd_input(int argc, char **argv) {
if (!res || res->status == CMD_SUCCESS) {
char *error = NULL;
- struct xkb_keymap *keymap = sway_keyboard_compile_keymap(
- config->handler_context.input_config, &error);
- if (!keymap) {
+ struct input_config *ic =
+ store_input_config(config->handler_context.input_config, &error);
+ if (!ic) {
+ free_input_config(config->handler_context.input_config);
if (res) {
free_cmd_results(res);
}
@@ -99,10 +100,6 @@ struct cmd_results *cmd_input(int argc, char **argv) {
free(error);
return res;
}
- xkb_keymap_unref(keymap);
-
- struct input_config *ic =
- store_input_config(config->handler_context.input_config);
input_manager_apply_input_config(ic);
retranslate_keysyms(ic);