keys: don't cache position for unknown keys
This commit is contained in:
parent
7dd3cc354d
commit
0059a43254
1 changed files with 11 additions and 22 deletions
33
keys.c
33
keys.c
|
@ -295,13 +295,20 @@ lookup_key(unsigned long id)
|
||||||
static int
|
static int
|
||||||
get_key_pos(unsigned long key_id)
|
get_key_pos(unsigned long key_id)
|
||||||
{
|
{
|
||||||
if (!cache_valid || key_id != cache_key_id) {
|
int position;
|
||||||
|
|
||||||
|
if (cache_valid && key_id == cache_key_id)
|
||||||
|
return cache_key_pos;
|
||||||
|
|
||||||
|
position = lookup_key(key_id);
|
||||||
|
|
||||||
|
if (position >= 0) {
|
||||||
cache_valid = 1;
|
cache_valid = 1;
|
||||||
cache_key_pos = lookup_key(key_id);
|
cache_key_pos = position;
|
||||||
cache_key_id = key_id;
|
cache_key_id = key_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
return cache_key_pos;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ================================================== */
|
/* ================================================== */
|
||||||
|
@ -321,25 +328,7 @@ KEY_GetCommandKey(void)
|
||||||
int
|
int
|
||||||
KEY_KeyKnown(unsigned long key_id)
|
KEY_KeyKnown(unsigned long key_id)
|
||||||
{
|
{
|
||||||
int position;
|
return get_key_pos(key_id) >= 0;
|
||||||
|
|
||||||
if (cache_valid && (key_id == cache_key_id)) {
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
|
|
||||||
position = lookup_key(key_id);
|
|
||||||
|
|
||||||
if (position >= 0) {
|
|
||||||
/* Store key in cache, we will probably be using it in a
|
|
||||||
minute... */
|
|
||||||
cache_valid = 1;
|
|
||||||
cache_key_pos = position;
|
|
||||||
cache_key_id = key_id;
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ================================================== */
|
/* ================================================== */
|
||||||
|
|
Loading…
Reference in a new issue