diff options
author | Ran Benita <ran234@gmail.com> | 2014-04-22 12:23:36 +0300 |
---|---|---|
committer | Ran Benita <ran234@gmail.com> | 2014-04-22 14:56:44 +0300 |
commit | 787faf36654ed75672613c560286caddadce3ec5 (patch) | |
tree | a3d72f5562234c15141faa3331f6ad1550e0df07 /src/keymap-priv.c | |
parent | 6b1cdee107caaf8009037763a3cc3cd51132a1dd (diff) | |
download | xorg-lib-libxkbcommon-787faf36654ed75672613c560286caddadce3ec5.tar.gz |
keymap: don't use darray in xkb_mod_set
Instead just statically allocate the mods array (of size MAX_MOD_SIZE =
32). The limit is not going anywhere, and static allocations are nicer
(nicer code, no OOM, etc.). It's also small and dense enough.
Signed-off-by: Ran Benita <ran234@gmail.com>
Diffstat (limited to 'src/keymap-priv.c')
-rw-r--r-- | src/keymap-priv.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/keymap-priv.c b/src/keymap-priv.c index f391336..d21dda7 100644 --- a/src/keymap-priv.c +++ b/src/keymap-priv.c @@ -29,24 +29,25 @@ static void update_builtin_keymap_fields(struct xkb_keymap *keymap) { - struct xkb_context *ctx = keymap->ctx; - const struct xkb_mod builtin_mods[] = { - { .name = xkb_atom_intern_literal(ctx, "Shift"), .type = MOD_REAL }, - { .name = xkb_atom_intern_literal(ctx, "Lock"), .type = MOD_REAL }, - { .name = xkb_atom_intern_literal(ctx, "Control"), .type = MOD_REAL }, - { .name = xkb_atom_intern_literal(ctx, "Mod1"), .type = MOD_REAL }, - { .name = xkb_atom_intern_literal(ctx, "Mod2"), .type = MOD_REAL }, - { .name = xkb_atom_intern_literal(ctx, "Mod3"), .type = MOD_REAL }, - { .name = xkb_atom_intern_literal(ctx, "Mod4"), .type = MOD_REAL }, - { .name = xkb_atom_intern_literal(ctx, "Mod5"), .type = MOD_REAL }, + /* Predefined (AKA real, core, X11) modifiers. The order is important! */ + static const char *const builtin_mods[] = { + [0] = "Shift", + [1] = "Lock", + [2] = "Control", + [3] = "Mod1", + [4] = "Mod2", + [5] = "Mod3", + [6] = "Mod4", + [7] = "Mod5" }; - /* - * Add predefined (AKA real, core, X11) modifiers. - * The order is important! - */ - darray_append_items(keymap->mods.mods, - builtin_mods, ARRAY_SIZE(builtin_mods)); + for (unsigned i = 0; i < ARRAY_SIZE(builtin_mods); i++) { + keymap->mods.mods[i].name = xkb_atom_intern(keymap->ctx, + builtin_mods[i], + strlen(builtin_mods[i])); + keymap->mods.mods[i].type = MOD_REAL; + } + keymap->mods.num_mods = ARRAY_SIZE(builtin_mods); } struct xkb_keymap * |