Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/console/console.c

    rcccc091 re37eddc  
    344344}
    345345
     346static console_t *cons_get_active_uspace(void)
     347{
     348        fibril_mutex_lock(&switch_mtx);
     349
     350        console_t *active_uspace = active_console;
     351        if (active_uspace == kernel_console) {
     352                active_uspace = prev_console;
     353        }
     354        assert(active_uspace != kernel_console);
     355
     356        fibril_mutex_unlock(&switch_mtx);
     357
     358        return active_uspace;
     359}
     360
    346361static ssize_t limit(ssize_t val, ssize_t lo, ssize_t hi)
    347362{
     
    466481                                event->c = c;
    467482                               
    468                                 prodcons_produce(&active_console->input_pc, &event->link);
     483                                /*
     484                                 * Kernel console does not read events
     485                                 * from us, so we will redirect them
     486                                 * to the (last) active userspace console
     487                                 * if necessary.
     488                                 */
     489                                console_t *target_console = cons_get_active_uspace();
     490                               
     491                                prodcons_produce(&target_console->input_pc,
     492                                    &event->link);
    469493                        }
    470494                       
     
    904928                atomic_set(&consoles[i].refcnt, 0);
    905929                fibril_mutex_initialize(&consoles[i].mtx);
     930                prodcons_initialize(&consoles[i].input_pc);
    906931               
    907932                if (graphics_state == GRAPHICS_FULL) {
     
    942967                }
    943968               
    944                 prodcons_initialize(&consoles[i].input_pc);
    945969                cons_redraw_state(&consoles[i]);
    946970               
Note: See TracChangeset for help on using the changeset viewer.