Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1559 → Rev 1560

/uspace/trunk/kbd/generic/kbd.c
91,16 → 91,21
 
case IPC_M_INTERRUPT:
if (connected) {
int chr;
/* recode to ASCII - one interrupt can produce more than one code so result is stored in fifo */
kbd_arch_process(&keybuffer, IPC_GET_ARG2(call));
 
retval = 0;
 
while (!keybuffer_empty(&keybuffer)) {
if (!keybuffer_pop(&keybuffer, (char *)&arg1)) {
if (!keybuffer_pop(&keybuffer, (int *)&chr)) {
break;
}
send_call(phoneid, KBD_PUSHCHAR, arg1);
{
arg1=chr;
send_call(phoneid, KBD_PUSHCHAR, arg1);
}
}
 
}
/uspace/trunk/kbd/generic/key_buffer.c
72,7 → 72,7
* If buffer is full, character is ignored.
* @param key code of stored key
*/
void keybuffer_push(keybuffer_t *keybuffer, char key)
void keybuffer_push(keybuffer_t *keybuffer, int key)
{
futex_down(&keybuffer_futex);
if (keybuffer->items < KEYBUFFER_SIZE) {
87,12 → 87,12
* @param c pointer to space where to store character from buffer.
* @return zero on empty buffer, nonzero else
*/
int keybuffer_pop(keybuffer_t *keybuffer, char *c)
int keybuffer_pop(keybuffer_t *keybuffer, int *c)
{
futex_down(&keybuffer_futex);
if (keybuffer->items > 0) {
keybuffer->items--;
*c = keybuffer->fifo[keybuffer->head];
*c = (keybuffer->fifo[keybuffer->head]) ;
keybuffer->head = (keybuffer->head + 1) % KEYBUFFER_SIZE;
futex_up(&keybuffer_futex);
return 1;