summaryrefslogtreecommitdiff
path: root/src/x11
diff options
context:
space:
mode:
authorRan Benita <ran234@gmail.com>2014-04-22 12:23:36 +0300
committerRan Benita <ran234@gmail.com>2014-04-22 14:56:44 +0300
commit787faf36654ed75672613c560286caddadce3ec5 (patch)
treea3d72f5562234c15141faa3331f6ad1550e0df07 /src/x11
parent6b1cdee107caaf8009037763a3cc3cd51132a1dd (diff)
downloadxorg-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/x11')
-rw-r--r--src/x11/keymap.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/x11/keymap.c b/src/x11/keymap.c
index 716fc51..0142c8b 100644
--- a/src/x11/keymap.c
+++ b/src/x11/keymap.c
@@ -508,17 +508,14 @@ get_vmods(struct xkb_keymap *keymap, xcb_connection_t *conn,
{
uint8_t *iter = xcb_xkb_get_map_map_vmods_rtrn(map);
- darray_resize0(keymap->mods.mods,
- NUM_REAL_MODS + msb_pos(reply->virtualMods));
+ keymap->mods.num_mods = NUM_REAL_MODS + msb_pos(reply->virtualMods);
for (unsigned i = 0; i < NUM_VMODS; i++) {
if (reply->virtualMods & (1u << i)) {
uint8_t wire = *iter;
- struct xkb_mod *mod = &darray_item(keymap->mods.mods,
- NUM_REAL_MODS + i);
- mod->type = MOD_VIRT;
- mod->mapping = translate_mods(wire, 0, 0);
+ keymap->mods.mods[i].type = MOD_VIRT;
+ keymap->mods.mods[i].mapping = translate_mods(wire, 0, 0);
iter++;
}
@@ -920,14 +917,12 @@ get_vmod_names(struct xkb_keymap *keymap, xcb_connection_t *conn,
* tells us which vmods exist (a vmod must have a name), so we fix
* up the size here.
*/
- darray_resize0(keymap->mods.mods,
- NUM_REAL_MODS + msb_pos(reply->virtualMods));
+ keymap->mods.num_mods = NUM_REAL_MODS + msb_pos(reply->virtualMods);
for (unsigned i = 0; i < NUM_VMODS; i++) {
if (reply->virtualMods & (1u << i)) {
xcb_atom_t wire = *iter;
- struct xkb_mod *mod = &darray_item(keymap->mods.mods,
- NUM_REAL_MODS + i);
+ struct xkb_mod *mod = &keymap->mods.mods[NUM_REAL_MODS + i];
if (!adopt_atom(keymap->ctx, conn, wire, &mod->name))
return false;