Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/usbhid/kbd/kbdrepeat.c

    r2a5b62b r5f6e25e  
    4646
    4747
     48/** Delay between auto-repeat state checks when no key is being repeated. */
     49static unsigned int CHECK_DELAY = 10000;
    4850
    4951/*----------------------------------------------------------------------------*/
     
    7173{
    7274        unsigned int delay = 0;
    73 
     75       
    7476        usb_log_debug("Starting autorepeat loop.\n");
    7577
     
    7779                // check if the kbd structure is usable
    7880                if (!usb_kbd_is_initialized(kbd)) {
    79                         usb_log_warning("kbd not ready, exiting autorepeat.\n");
     81                        if (usb_kbd_is_ready_to_destroy(kbd)) {
     82                                usb_kbd_destroy(kbd);
     83                        }
    8084                        return;
    8185                }
    8286               
    83                 fibril_mutex_lock(&kbd->repeat_mtx);
     87                fibril_mutex_lock(kbd->repeat_mtx);
    8488
    8589                if (kbd->repeat.key_new > 0) {
     
    105109                        delay = CHECK_DELAY;
    106110                }
    107                 fibril_mutex_unlock(&kbd->repeat_mtx);
     111                fibril_mutex_unlock(kbd->repeat_mtx);
    108112               
    109113                async_usleep(delay);
     
    126130{
    127131        usb_log_debug("Autorepeat fibril spawned.\n");
    128 
     132       
    129133        if (arg == NULL) {
    130134                usb_log_error("No device!\n");
    131135                return EINVAL;
    132136        }
    133 
     137       
    134138        usb_kbd_t *kbd = (usb_kbd_t *)arg;
    135 
     139       
    136140        usb_kbd_repeat_loop(kbd);
    137 
     141       
    138142        return EOK;
    139143}
     
    152156void usb_kbd_repeat_start(usb_kbd_t *kbd, unsigned int key)
    153157{
    154         fibril_mutex_lock(&kbd->repeat_mtx);
     158        fibril_mutex_lock(kbd->repeat_mtx);
    155159        kbd->repeat.key_new = key;
    156         fibril_mutex_unlock(&kbd->repeat_mtx);
     160        fibril_mutex_unlock(kbd->repeat_mtx);
    157161}
    158162
     
    170174void usb_kbd_repeat_stop(usb_kbd_t *kbd, unsigned int key)
    171175{
    172         fibril_mutex_lock(&kbd->repeat_mtx);
     176        fibril_mutex_lock(kbd->repeat_mtx);
    173177        if (key == kbd->repeat.key_new) {
    174178                kbd->repeat.key_new = 0;
    175179        }
    176         fibril_mutex_unlock(&kbd->repeat_mtx);
     180        fibril_mutex_unlock(kbd->repeat_mtx);
    177181}
    178182
Note: See TracChangeset for help on using the changeset viewer.