From 69aa6b7987aa4cd18ee48066033cb3679d56c59e Mon Sep 17 00:00:00 2001 From: Sangjin Kim Date: Wed, 10 Jul 2013 13:59:04 +0900 Subject: [PATCH] virtio-gl: additional merge. Change-Id: Ib303557d623957f75a1c986b2f5546bddfc72f95 Signed-off-by: Sangjin Kim --- tizen/src/hw/virtio-gl.c | 50 +++++++++++++++++++++++++++++++++------- tizen/src/hw/virtio-gl.h | 2 ++ 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/tizen/src/hw/virtio-gl.c b/tizen/src/hw/virtio-gl.c index c2c6c76f65..4b51d28a74 100644 --- a/tizen/src/hw/virtio-gl.c +++ b/tizen/src/hw/virtio-gl.c @@ -216,23 +216,57 @@ static int virtio_gl_load(QEMUFile *f, void *opaque, int version_id) return 0; } -VirtIODevice *virtio_gl_init(DeviceState *dev) +static int virtio_gl_device_init(VirtIODevice *vdev) { - VirtIOGL *s; + VirtIOGL *s = VIRTIO_GL(vdev); + DeviceState *qdev = DEVICE(vdev); - s = g_malloc0(sizeof(VirtIOGL)); - virtio_init(&s->vdev, TYPE_VIRTIO_GL, VIRTIO_ID_GL, 0); - if (&s->vdev == NULL) { + virtio_init(vdev, TYPE_VIRTIO_GL, VIRTIO_ID_GL, 0); + if (vdev == NULL) { ERR("Failed to initialize virtio gl device.\n"); - return NULL; + return -1; } VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(&s->vdev); vdc->get_features = virtio_gl_get_features; s->vq = virtio_add_queue(&s->vdev, 128, virtio_gl_handle); - register_savevm(dev, TYPE_VIRTIO_GL, -1, 1, virtio_gl_save, virtio_gl_load, s); + register_savevm(qdev, TYPE_VIRTIO_GL, -1, 1, virtio_gl_save, virtio_gl_load, s); - return &s->vdev; + return 0; +} + +static int virtio_gl_device_exit(DeviceState *qdev) +{ + VirtIODevice *vdev = VIRTIO_DEVICE(qdev); + + INFO("destroy virtio-gl device\n"); + + virtio_cleanup(vdev); + + return 0; +} + +static void virtio_gl_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass); + dc->exit = virtio_gl_device_exit; + vdc->init = virtio_gl_device_init; + vdc->get_features = virtio_gl_get_features; +} + +static const TypeInfo virtio_gl_info = { + .name = TYPE_VIRTIO_GL, + .parent = TYPE_VIRTIO_DEVICE, + .instance_size = sizeof(VirtIOGL), + .class_init = virtio_gl_class_init, +}; + +static void virtio_register_types(void) +{ + type_register_static(&virtio_gl_info); } +type_init(virtio_register_types) + diff --git a/tizen/src/hw/virtio-gl.h b/tizen/src/hw/virtio-gl.h index 5f966569d2..a9e5ff5732 100644 --- a/tizen/src/hw/virtio-gl.h +++ b/tizen/src/hw/virtio-gl.h @@ -18,6 +18,8 @@ extern "C" { MULTI_DEBUG_CHANNEL(qemu, virtio-gl); #define TYPE_VIRTIO_GL "virtio-gl" +#define VIRTIO_GL(obj) \ + OBJECT_CHECK(VirtIOGL, (obj), TYPE_VIRTIO_GL) typedef hwaddr arg_t; int decode_call_int(ProcessStruct *p, char *in_args, int args_len, char *r_buffer); -- 2.34.1