From: RĂ©mi Denis-Courmont Date: Wed, 7 Oct 2009 19:24:45 +0000 (+0300) Subject: ConfigKeyToString: binary search X-Git-Tag: 1.1.0-ff~2978 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=b72ccbc55b251bcdf1da8a359a773fad19dd82de;p=vlc ConfigKeyToString: binary search --- diff --git a/src/config/keys.c b/src/config/keys.c index 0fd50cdd28..ef251afbf9 100644 --- a/src/config/keys.c +++ b/src/config/keys.c @@ -175,8 +175,7 @@ char *KeyToString (uint_fast32_t sym) { key_descriptor_t *d; - d = (key_descriptor_t *) - bsearch ((void *)(uintptr_t)sym, vlc_keys, vlc_num_keys, + d = bsearch ((void *)(uintptr_t)sym, vlc_keys, vlc_num_keys, sizeof (vlc_keys[0]), cmpkey); return d ? strdup (d->psz_key_string) : NULL; } @@ -238,14 +237,16 @@ char *ConfigKeyToString (uint_fast32_t i_key) vlc_modifiers[i].psz_key_string); } } - for (size_t i = 0; i < vlc_num_keys; i++) - { - if ((i_key & ~KEY_MODIFIER) == vlc_keys[i].i_key_code) - { - p += snprintf (p, psz_end - p, "%s", - vlc_keys[i].psz_key_string); - break; - } - } + + key_descriptor_t *d; + + i_key &= ~KEY_MODIFIER; + d = bsearch ((void *)(uintptr_t)i_key, vlc_keys, vlc_num_keys, + sizeof (vlc_keys[0]), cmpkey); + if (d) + p += snprintf (p, psz_end - p, "%s", d->psz_key_string); + else + return NULL; + return psz_key; }