From a1f8440d700c7a0b10494d0183fb92b66bda54e3 Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Wed, 6 Jun 2012 10:01:43 +0300 Subject: [PATCH] symbols: use darray in struct xkb_sym_map Signed-off-by: Ran Benita --- src/alloc.c | 16 ++-------------- src/xkb-priv.h | 5 ++--- src/xkbcomp/symbols.c | 2 +- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index d0b0618..d474a64 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -158,19 +158,7 @@ bool XkbcResizeKeySyms(struct xkb_keymap *keymap, xkb_keycode_t key, unsigned int needed) { - struct xkb_sym_map *sym_map = &darray_item(keymap->map->key_sym_map, key); - - if (sym_map->size_syms >= needed) - return true; - - sym_map->syms = uTypedRecalloc(sym_map->syms, sym_map->size_syms, - needed, xkb_keysym_t); - if (!sym_map->syms) { - sym_map->size_syms = 0; - return false; - } - - sym_map->size_syms = needed; + darray_resize0(darray_item(keymap->map->key_sym_map, key).syms, needed); return true; } @@ -241,7 +229,7 @@ XkbcFreeClientMap(struct xkb_keymap *keymap) darray_foreach(sym_map, map->key_sym_map) { free(sym_map->sym_index); free(sym_map->num_syms); - free(sym_map->syms); + darray_free(sym_map->syms); } darray_free(map->key_sym_map); diff --git a/src/xkb-priv.h b/src/xkb-priv.h index 6493aea..e421fd9 100644 --- a/src/xkb-priv.h +++ b/src/xkb-priv.h @@ -274,8 +274,7 @@ struct xkb_sym_map { unsigned char width; int *sym_index; /* per level/group index into 'syms' */ unsigned int *num_syms; /* per level/group */ - xkb_keysym_t *syms; - unsigned int size_syms; /* size of 'syms' */ + darray(xkb_keysym_t) syms; }; struct xkb_client_map { @@ -389,7 +388,7 @@ struct xkb_keymap { #define XkbKeyNumSyms(d, k, g, sl) \ (darray_item((d)->map->key_sym_map, k).num_syms[(g * XkbKeyGroupsWidth(d, k)) + sl]) #define XkbKeySym(d, k, n) \ - (&darray_item((d)->map->key_sym_map, k).syms[n]) + (&darray_item(darray_item((d)->map->key_sym_map, k).syms, n)) #define XkbKeySymOffset(d, k, g, sl) \ (darray_item((d)->map->key_sym_map, k).sym_index[(g * XkbKeyGroupsWidth(d, k)) + sl]) #define XkbKeySymEntry(d, k, g, sl) \ diff --git a/src/xkbcomp/symbols.c b/src/xkbcomp/symbols.c index f3b16ec..f464416 100644 --- a/src/xkbcomp/symbols.c +++ b/src/xkbcomp/symbols.c @@ -1942,7 +1942,7 @@ CopySymbolsDef(struct xkb_keymap *keymap, KeyInfo *key, int start_from) if (tmp < key->numLevels[i] && darray_item(key->symsMapNumEntries[i], tmp) != 0) { - memcpy(&sym_map->syms[symIndex], + memcpy(darray_mem(sym_map->syms, symIndex), darray_mem(key->syms[i], darray_item(key->symsMapIndex[i], tmp)), darray_item(key->symsMapNumEntries[i], tmp) * sizeof(xkb_keysym_t)); -- 2.7.4