static void virtio_gpu_handle_cursor(VirtIODevice *vdev, VirtQueue *vq)

{

    VirtIOGPU *g = VIRTIO_GPU(vdev);

    VirtQueueElement elem;

    size_t s;

    struct virtio_gpu_update_cursor cursor_info;



    if (!virtio_queue_ready(vq)) {

        return;

    }

    while (virtqueue_pop(vq, &elem)) {

        s = iov_to_buf(elem.out_sg, elem.out_num, 0,

                       &cursor_info, sizeof(cursor_info));

        if (s != sizeof(cursor_info)) {

            qemu_log_mask(LOG_GUEST_ERROR,

                          "%s: cursor size incorrect %zu vs %zu\n",

                          __func__, s, sizeof(cursor_info));

        } else {

            update_cursor(g, &cursor_info);

        }

        virtqueue_push(vq, &elem, 0);

        virtio_notify(vdev, vq);

    }

}

static void virtio_gpu_handle_cursor(VirtIODevice *vdev, VirtQueue *vq)

{

    VirtIOGPU *g = VIRTIO_GPU(vdev);

    VirtQueueElement elem;

    size_t s;

    struct virtio_gpu_update_cursor cursor_info;



    if (!virtio_queue_ready(vq)) {

        return;

    }

    while (virtqueue_pop(vq, &elem)) {

        s = iov_to_buf(elem.out_sg, elem.out_num, 0,

                       &cursor_info, sizeof(cursor_info));

        if (s != sizeof(cursor_info)) {

            qemu_log_mask(LOG_GUEST_ERROR,

                          "%s: cursor size incorrect %zu vs %zu\n",

                          __func__, s, sizeof(cursor_info));

        } else {

            update_cursor(g, &cursor_info);

        }

        virtqueue_push(vq, &elem, 0);

        virtio_notify(vdev, vq);

    }

}

static void FUNC_0(VirtIODevice *VAR_0, VirtQueue *VAR_1)

{

    VirtIOGPU *g = VIRTIO_GPU(VAR_0);

    VirtQueueElement elem;

    size_t s;

    struct virtio_gpu_update_cursor VAR_2;



    if (!virtio_queue_ready(VAR_1)) {

        return;

    }

    while (virtqueue_pop(VAR_1, &elem)) {

        s = iov_to_buf(elem.out_sg, elem.out_num, 0,

                       &VAR_2, sizeof(VAR_2));

        if (s != sizeof(VAR_2)) {

            qemu_log_mask(LOG_GUEST_ERROR,

                          "%s: cursor size incorrect %zu vs %zu\n",

                          __func__, s, sizeof(VAR_2));

        } else {

            update_cursor(g, &VAR_2);

        }

        virtqueue_push(VAR_1, &elem, 0);

        virtio_notify(VAR_0, VAR_1);

    }

}

static void FUNC_0(VirtIODevice *VAR_0, VirtQueue *VAR_1)
{ VirtIOGPU *g = VIRTIO_GPU(VAR_0); VirtQueueElement elem; size_t s; struct virtio_gpu_update_cursor VAR_2; if (!virtio_queue_ready(VAR_1)) { return; } while (virtqueue_pop(VAR_1, &elem)) { s = iov_to_buf(elem.out_sg, elem.out_num, 0,
&VAR_2, sizeof(VAR_2)); if (s != sizeof(VAR_2)) { qemu_log_mask(LOG_GUEST_ERROR,
"%s: cursor size incorrect %zu vs %zu\n",
__func__, s, sizeof(VAR_2)); } else { update_cursor(g, &VAR_2); } virtqueue_push(VAR_1, &elem, 0); virtio_notify(VAR_0, VAR_1); } }