Revision 7ffb82ca

b/vnc.c
1111 1111
    }
1112 1112

  
1113 1113
    vnc_remove_timer(vs->vd);
1114
    qemu_remove_led_event_handler(vs->led);
1114 1115
    qemu_free(vs);
1115 1116
}
1116 1117

  
......
1501 1502
    kbd_put_keycode(keycode | SCANCODE_UP);
1502 1503
}
1503 1504

  
1505
static void kbd_leds(void *opaque, int ledstate)
1506
{
1507
    VncState *vs = opaque;
1508
    int caps, num;
1509

  
1510
    caps = ledstate & QEMU_CAPS_LOCK_LED ? 1 : 0;
1511
    num  = ledstate & QEMU_NUM_LOCK_LED  ? 1 : 0;
1512

  
1513
    if (vs->modifiers_state[0x3a] != caps) {
1514
        vs->modifiers_state[0x3a] = caps;
1515
    }
1516
    if (vs->modifiers_state[0x45] != num) {
1517
        vs->modifiers_state[0x45] = num;
1518
    }
1519
}
1520

  
1504 1521
static void do_key_event(VncState *vs, int down, int keycode, int sym)
1505 1522
{
1506 1523
    /* QEMU console switch */
......
1526 1543
        break;
1527 1544
    case 0x3a:                        /* CapsLock */
1528 1545
    case 0x45:                        /* NumLock */
1529
        if (!down)
1546
        if (down)
1530 1547
            vs->modifiers_state[keycode] ^= 1;
1531 1548
        break;
1532 1549
    }
......
2412 2429
    vnc_flush(vs);
2413 2430
    vnc_read_when(vs, protocol_version, 12);
2414 2431
    reset_keys(vs);
2432
    vs->led = qemu_add_led_event_handler(kbd_leds, vs);
2415 2433

  
2416 2434
    vnc_init_timer(vd);
2417 2435

  
b/vnc.h
161 161
    size_t read_handler_expect;
162 162
    /* input */
163 163
    uint8_t modifiers_state[256];
164
    QEMUPutLEDEntry *led;
164 165

  
165 166
    Buffer zlib;
166 167
    Buffer zlib_tmp;

Also available in: Unified diff