Commit d4df42c4 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

input-linux: factor out input_linux_handle_mouse



No functional change.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Message-id: 1466067800-25434-2-git-send-email-kraxel@redhat.com
parent c80276b4
Loading
Loading
Loading
Loading
+53 −49
Original line number Diff line number Diff line
@@ -265,59 +265,43 @@ static void input_linux_event_mouse_button(int button)
    qemu_input_event_sync();
}

static void input_linux_event_mouse(void *opaque)
static void input_linux_handle_mouse(InputLinux *il, struct input_event *event)
{
    InputLinux *il = opaque;
    struct input_event event;
    int rc;

    for (;;) {
        rc = read(il->fd, &event, sizeof(event));
        if (rc != sizeof(event)) {
            if (rc < 0 && errno != EAGAIN) {
                fprintf(stderr, "%s: read: %s\n", __func__, strerror(errno));
                qemu_set_fd_handler(il->fd, NULL, NULL, NULL);
                close(il->fd);
            }
            break;
        }

        /* only send event to guest when grab is active */
    if (!il->grab_active) {
            continue;
        return;
    }

        switch (event.type) {
    switch (event->type) {
    case EV_KEY:
            switch (event.code) {
        switch (event->code) {
        case BTN_LEFT:
                qemu_input_queue_btn(NULL, INPUT_BUTTON_LEFT, event.value);
            qemu_input_queue_btn(NULL, INPUT_BUTTON_LEFT, event->value);
            break;
        case BTN_RIGHT:
                qemu_input_queue_btn(NULL, INPUT_BUTTON_RIGHT, event.value);
            qemu_input_queue_btn(NULL, INPUT_BUTTON_RIGHT, event->value);
            break;
        case BTN_MIDDLE:
                qemu_input_queue_btn(NULL, INPUT_BUTTON_MIDDLE, event.value);
            qemu_input_queue_btn(NULL, INPUT_BUTTON_MIDDLE, event->value);
            break;
        case BTN_GEAR_UP:
                qemu_input_queue_btn(NULL, INPUT_BUTTON_WHEEL_UP, event.value);
            qemu_input_queue_btn(NULL, INPUT_BUTTON_WHEEL_UP, event->value);
            break;
        case BTN_GEAR_DOWN:
            qemu_input_queue_btn(NULL, INPUT_BUTTON_WHEEL_DOWN,
                                     event.value);
                                 event->value);
            break;
        };
        break;
    case EV_REL:
            switch (event.code) {
        switch (event->code) {
        case REL_X:
                qemu_input_queue_rel(NULL, INPUT_AXIS_X, event.value);
            qemu_input_queue_rel(NULL, INPUT_AXIS_X, event->value);
            break;
        case REL_Y:
                qemu_input_queue_rel(NULL, INPUT_AXIS_Y, event.value);
            qemu_input_queue_rel(NULL, INPUT_AXIS_Y, event->value);
            break;
        case REL_WHEEL:
                il->wheel = event.value;
            il->wheel = event->value;
            break;
        }
        break;
@@ -332,6 +316,26 @@ static void input_linux_event_mouse(void *opaque)
        break;
    }
}

static void input_linux_event_mouse(void *opaque)
{
    InputLinux *il = opaque;
    struct input_event event;
    int rc;

    for (;;) {
        rc = read(il->fd, &event, sizeof(event));
        if (rc != sizeof(event)) {
            if (rc < 0 && errno != EAGAIN) {
                fprintf(stderr, "%s: read: %s\n", __func__, strerror(errno));
                qemu_set_fd_handler(il->fd, NULL, NULL, NULL);
                close(il->fd);
            }
            break;
        }

        input_linux_handle_mouse(il, &event);
    }
}

static void input_linux_complete(UserCreatable *uc, Error **errp)