Commit b5a1b443 authored by Eric Blake's avatar Eric Blake Committed by Markus Armbruster
Browse files

ui: Shorten references into InputEvent



An upcoming patch will alter how simple unions, like InputEvent, are
laid out, which will impact all lines of the form 'evt->u.XXX'
(expanding it to the longer 'evt->u.XXX.data').  For better
legibility in that patch, and less need for line wrapping, it's better
to use a temporary variable to reduce the effect of a layout change to
just the variable initializations, rather than every reference within
an InputEvent.

There was one instance in hid.c:hid_pointer_event() where the code
was referring to evt->u.rel inside the case label where evt->u.abs
is the correct name; thankfully, both members of the union have the
same type, so it happened to work, but it is now cleaner.

Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <1457021813-10704-8-git-send-email-eblake@redhat.com>
Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
parent 0399293e
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -842,14 +842,16 @@ static void sunkbd_handle_event(DeviceState *dev, QemuConsole *src,
{
    ChannelState *s = (ChannelState *)dev;
    int qcode, keycode;
    InputKeyEvent *key;

    assert(evt->type == INPUT_EVENT_KIND_KEY);
    qcode = qemu_input_key_value_to_qcode(evt->u.key->key);
    key = evt->u.key;
    qcode = qemu_input_key_value_to_qcode(key->key);
    trace_escc_sunkbd_event_in(qcode, QKeyCode_lookup[qcode],
                               evt->u.key->down);
                               key->down);

    if (qcode == Q_KEY_CODE_CAPS_LOCK) {
        if (evt->u.key->down) {
        if (key->down) {
            s->caps_lock_mode ^= 1;
            if (s->caps_lock_mode == 2) {
                return; /* Drop second press */
@@ -863,7 +865,7 @@ static void sunkbd_handle_event(DeviceState *dev, QemuConsole *src,
    }

    if (qcode == Q_KEY_CODE_NUM_LOCK) {
        if (evt->u.key->down) {
        if (key->down) {
            s->num_lock_mode ^= 1;
            if (s->num_lock_mode == 2) {
                return; /* Drop second press */
@@ -877,7 +879,7 @@ static void sunkbd_handle_event(DeviceState *dev, QemuConsole *src,
    }

    keycode = qcode_to_keycode[qcode];
    if (!evt->u.key->down) {
    if (!key->down) {
        keycode |= 0x80;
    }
    trace_escc_sunkbd_event_out(keycode);
+21 −15
Original line number Diff line number Diff line
@@ -116,37 +116,42 @@ static void hid_pointer_event(DeviceState *dev, QemuConsole *src,
    };
    HIDState *hs = (HIDState *)dev;
    HIDPointerEvent *e;
    InputMoveEvent *move;
    InputBtnEvent *btn;

    assert(hs->n < QUEUE_LENGTH);
    e = &hs->ptr.queue[(hs->head + hs->n) & QUEUE_MASK];

    switch (evt->type) {
    case INPUT_EVENT_KIND_REL:
        if (evt->u.rel->axis == INPUT_AXIS_X) {
            e->xdx += evt->u.rel->value;
        } else if (evt->u.rel->axis == INPUT_AXIS_Y) {
            e->ydy += evt->u.rel->value;
        move = evt->u.rel;
        if (move->axis == INPUT_AXIS_X) {
            e->xdx += move->value;
        } else if (move->axis == INPUT_AXIS_Y) {
            e->ydy += move->value;
        }
        break;

    case INPUT_EVENT_KIND_ABS:
        if (evt->u.rel->axis == INPUT_AXIS_X) {
            e->xdx = evt->u.rel->value;
        } else if (evt->u.rel->axis == INPUT_AXIS_Y) {
            e->ydy = evt->u.rel->value;
        move = evt->u.abs;
        if (move->axis == INPUT_AXIS_X) {
            e->xdx = move->value;
        } else if (move->axis == INPUT_AXIS_Y) {
            e->ydy = move->value;
        }
        break;

    case INPUT_EVENT_KIND_BTN:
        if (evt->u.btn->down) {
            e->buttons_state |= bmap[evt->u.btn->button];
            if (evt->u.btn->button == INPUT_BUTTON_WHEEL_UP) {
        btn = evt->u.btn;
        if (btn->down) {
            e->buttons_state |= bmap[btn->button];
            if (btn->button == INPUT_BUTTON_WHEEL_UP) {
                e->dz--;
            } else if (evt->u.btn->button == INPUT_BUTTON_WHEEL_DOWN) {
            } else if (btn->button == INPUT_BUTTON_WHEEL_DOWN) {
                e->dz++;
            }
        } else {
            e->buttons_state &= ~bmap[evt->u.btn->button];
            e->buttons_state &= ~bmap[btn->button];
        }
        break;

@@ -223,9 +228,10 @@ static void hid_keyboard_event(DeviceState *dev, QemuConsole *src,
    HIDState *hs = (HIDState *)dev;
    int scancodes[3], i, count;
    int slot;
    InputKeyEvent *key = evt->u.key;

    count = qemu_input_key_value_to_scancode(evt->u.key->key,
                                             evt->u.key->down,
    count = qemu_input_key_value_to_scancode(key->key,
                                             key->down,
                                             scancodes);
    if (hs->n + count > QUEUE_LENGTH) {
        fprintf(stderr, "usb-kbd: warning: key event queue full\n");
+16 −11
Original line number Diff line number Diff line
@@ -182,10 +182,11 @@ static void ps2_keyboard_event(DeviceState *dev, QemuConsole *src,
{
    PS2KbdState *s = (PS2KbdState *)dev;
    int scancodes[3], i, count;
    InputKeyEvent *key = evt->u.key;

    qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER);
    count = qemu_input_key_value_to_scancode(evt->u.key->key,
                                             evt->u.key->down,
    count = qemu_input_key_value_to_scancode(key->key,
                                             key->down,
                                             scancodes);
    for (i = 0; i < count; i++) {
        ps2_put_keycode(s, scancodes[i]);
@@ -389,6 +390,8 @@ static void ps2_mouse_event(DeviceState *dev, QemuConsole *src,
        [INPUT_BUTTON_RIGHT]  = MOUSE_EVENT_RBUTTON,
    };
    PS2MouseState *s = (PS2MouseState *)dev;
    InputMoveEvent *move;
    InputBtnEvent *btn;

    /* check if deltas are recorded when disabled */
    if (!(s->mouse_status & MOUSE_STATUS_ENABLED))
@@ -396,23 +399,25 @@ static void ps2_mouse_event(DeviceState *dev, QemuConsole *src,

    switch (evt->type) {
    case INPUT_EVENT_KIND_REL:
        if (evt->u.rel->axis == INPUT_AXIS_X) {
            s->mouse_dx += evt->u.rel->value;
        } else if (evt->u.rel->axis == INPUT_AXIS_Y) {
            s->mouse_dy -= evt->u.rel->value;
        move = evt->u.rel;
        if (move->axis == INPUT_AXIS_X) {
            s->mouse_dx += move->value;
        } else if (move->axis == INPUT_AXIS_Y) {
            s->mouse_dy -= move->value;
        }
        break;

    case INPUT_EVENT_KIND_BTN:
        if (evt->u.btn->down) {
            s->mouse_buttons |= bmap[evt->u.btn->button];
            if (evt->u.btn->button == INPUT_BUTTON_WHEEL_UP) {
        btn = evt->u.btn;
        if (btn->down) {
            s->mouse_buttons |= bmap[btn->button];
            if (btn->button == INPUT_BUTTON_WHEEL_UP) {
                s->mouse_dz--;
            } else if (evt->u.btn->button == INPUT_BUTTON_WHEEL_DOWN) {
            } else if (btn->button == INPUT_BUTTON_WHEEL_DOWN) {
                s->mouse_dz++;
            }
        } else {
            s->mouse_buttons &= ~bmap[evt->u.btn->button];
            s->mouse_buttons &= ~bmap[btn->button];
        }
        break;

+20 −13
Original line number Diff line number Diff line
@@ -191,46 +191,53 @@ static void virtio_input_handle_event(DeviceState *dev, QemuConsole *src,
    VirtIOInput *vinput = VIRTIO_INPUT(dev);
    virtio_input_event event;
    int qcode;
    InputKeyEvent *key;
    InputMoveEvent *move;
    InputBtnEvent *btn;

    switch (evt->type) {
    case INPUT_EVENT_KIND_KEY:
        qcode = qemu_input_key_value_to_qcode(evt->u.key->key);
        key = evt->u.key;
        qcode = qemu_input_key_value_to_qcode(key->key);
        if (qcode && keymap_qcode[qcode]) {
            event.type  = cpu_to_le16(EV_KEY);
            event.code  = cpu_to_le16(keymap_qcode[qcode]);
            event.value = cpu_to_le32(evt->u.key->down ? 1 : 0);
            event.value = cpu_to_le32(key->down ? 1 : 0);
            virtio_input_send(vinput, &event);
        } else {
            if (evt->u.key->down) {
            if (key->down) {
                fprintf(stderr, "%s: unmapped key: %d [%s]\n", __func__,
                        qcode, QKeyCode_lookup[qcode]);
            }
        }
        break;
    case INPUT_EVENT_KIND_BTN:
        if (keymap_button[evt->u.btn->button]) {
        btn = evt->u.btn;
        if (keymap_button[btn->button]) {
            event.type  = cpu_to_le16(EV_KEY);
            event.code  = cpu_to_le16(keymap_button[evt->u.btn->button]);
            event.value = cpu_to_le32(evt->u.btn->down ? 1 : 0);
            event.code  = cpu_to_le16(keymap_button[btn->button]);
            event.value = cpu_to_le32(btn->down ? 1 : 0);
            virtio_input_send(vinput, &event);
        } else {
            if (evt->u.btn->down) {
            if (btn->down) {
                fprintf(stderr, "%s: unmapped button: %d [%s]\n", __func__,
                        evt->u.btn->button,
                        InputButton_lookup[evt->u.btn->button]);
                        btn->button,
                        InputButton_lookup[btn->button]);
            }
        }
        break;
    case INPUT_EVENT_KIND_REL:
        move = evt->u.rel;
        event.type  = cpu_to_le16(EV_REL);
        event.code  = cpu_to_le16(axismap_rel[evt->u.rel->axis]);
        event.value = cpu_to_le32(evt->u.rel->value);
        event.code  = cpu_to_le16(axismap_rel[move->axis]);
        event.value = cpu_to_le32(move->value);
        virtio_input_send(vinput, &event);
        break;
    case INPUT_EVENT_KIND_ABS:
        move = evt->u.abs;
        event.type  = cpu_to_le16(EV_ABS);
        event.code  = cpu_to_le16(axismap_abs[evt->u.abs->axis]);
        event.value = cpu_to_le32(evt->u.abs->value);
        event.code  = cpu_to_le16(axismap_abs[move->axis]);
        event.value = cpu_to_le32(move->value);
        virtio_input_send(vinput, &event);
        break;
    default:
+19 −12
Original line number Diff line number Diff line
@@ -47,20 +47,24 @@ static InputEvent *qapi_clone_InputEvent(InputEvent *src)

void replay_save_input_event(InputEvent *evt)
{
    InputKeyEvent *key;
    InputBtnEvent *btn;
    InputMoveEvent *move;
    replay_put_dword(evt->type);

    switch (evt->type) {
    case INPUT_EVENT_KIND_KEY:
        replay_put_dword(evt->u.key->key->type);
        key = evt->u.key;
        replay_put_dword(key->key->type);

        switch (evt->u.key->key->type) {
        switch (key->key->type) {
        case KEY_VALUE_KIND_NUMBER:
            replay_put_qword(evt->u.key->key->u.number);
            replay_put_byte(evt->u.key->down);
            replay_put_qword(key->key->u.number);
            replay_put_byte(key->down);
            break;
        case KEY_VALUE_KIND_QCODE:
            replay_put_dword(evt->u.key->key->u.qcode);
            replay_put_byte(evt->u.key->down);
            replay_put_dword(key->key->u.qcode);
            replay_put_byte(key->down);
            break;
        case KEY_VALUE_KIND__MAX:
            /* keep gcc happy */
@@ -68,16 +72,19 @@ void replay_save_input_event(InputEvent *evt)
        }
        break;
    case INPUT_EVENT_KIND_BTN:
        replay_put_dword(evt->u.btn->button);
        replay_put_byte(evt->u.btn->down);
        btn = evt->u.btn;
        replay_put_dword(btn->button);
        replay_put_byte(btn->down);
        break;
    case INPUT_EVENT_KIND_REL:
        replay_put_dword(evt->u.rel->axis);
        replay_put_qword(evt->u.rel->value);
        move = evt->u.rel;
        replay_put_dword(move->axis);
        replay_put_qword(move->value);
        break;
    case INPUT_EVENT_KIND_ABS:
        replay_put_dword(evt->u.abs->axis);
        replay_put_qword(evt->u.abs->value);
        move = evt->u.abs;
        replay_put_dword(move->axis);
        replay_put_qword(move->value);
        break;
    case INPUT_EVENT_KIND__MAX:
        /* keep gcc happy */
Loading