virtio-gpu: use class function for ctrl queue handlers

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 20210430113547.1816178-1-kraxel@redhat.com
Message-Id: <20210430113547.1816178-6-kraxel@redhat.com>
This commit is contained in:
Gerd Hoffmann 2021-04-30 13:35:36 +02:00
parent 76fa8b359b
commit cabbe8e588
2 changed files with 16 additions and 4 deletions

View File

@ -909,7 +909,9 @@ static void virtio_gpu_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
static void virtio_gpu_ctrl_bh(void *opaque) static void virtio_gpu_ctrl_bh(void *opaque)
{ {
VirtIOGPU *g = opaque; VirtIOGPU *g = opaque;
virtio_gpu_handle_ctrl(&g->parent_obj.parent_obj, g->ctrl_vq); VirtIOGPUClass *vgc = VIRTIO_GPU_GET_CLASS(g);
vgc->handle_ctrl(&g->parent_obj.parent_obj, g->ctrl_vq);
} }
static void virtio_gpu_handle_cursor(VirtIODevice *vdev, VirtQueue *vq) static void virtio_gpu_handle_cursor(VirtIODevice *vdev, VirtQueue *vq)
@ -1226,9 +1228,12 @@ static void virtio_gpu_class_init(ObjectClass *klass, void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass); VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
VirtIOGPUBaseClass *vgc = VIRTIO_GPU_BASE_CLASS(klass); VirtIOGPUBaseClass *vbc = VIRTIO_GPU_BASE_CLASS(klass);
VirtIOGPUClass *vgc = VIRTIO_GPU_CLASS(klass);
vbc->gl_flushed = virtio_gpu_gl_flushed;
vgc->handle_ctrl = virtio_gpu_handle_ctrl;
vgc->gl_flushed = virtio_gpu_gl_flushed;
vdc->realize = virtio_gpu_device_realize; vdc->realize = virtio_gpu_device_realize;
vdc->reset = virtio_gpu_reset; vdc->reset = virtio_gpu_reset;
vdc->get_config = virtio_gpu_get_config; vdc->get_config = virtio_gpu_get_config;
@ -1242,6 +1247,7 @@ static const TypeInfo virtio_gpu_info = {
.name = TYPE_VIRTIO_GPU, .name = TYPE_VIRTIO_GPU,
.parent = TYPE_VIRTIO_GPU_BASE, .parent = TYPE_VIRTIO_GPU_BASE,
.instance_size = sizeof(VirtIOGPU), .instance_size = sizeof(VirtIOGPU),
.class_size = sizeof(VirtIOGPUClass),
.class_init = virtio_gpu_class_init, .class_init = virtio_gpu_class_init,
}; };

View File

@ -29,7 +29,7 @@ OBJECT_DECLARE_TYPE(VirtIOGPUBase, VirtIOGPUBaseClass,
VIRTIO_GPU_BASE) VIRTIO_GPU_BASE)
#define TYPE_VIRTIO_GPU "virtio-gpu-device" #define TYPE_VIRTIO_GPU "virtio-gpu-device"
OBJECT_DECLARE_SIMPLE_TYPE(VirtIOGPU, VIRTIO_GPU) OBJECT_DECLARE_TYPE(VirtIOGPU, VirtIOGPUClass, VIRTIO_GPU)
#define TYPE_VIRTIO_GPU_GL "virtio-gpu-gl-device" #define TYPE_VIRTIO_GPU_GL "virtio-gpu-gl-device"
OBJECT_DECLARE_SIMPLE_TYPE(VirtIOGPUGL, VIRTIO_GPU_GL) OBJECT_DECLARE_SIMPLE_TYPE(VirtIOGPUGL, VIRTIO_GPU_GL)
@ -166,6 +166,12 @@ struct VirtIOGPU {
} stats; } stats;
}; };
struct VirtIOGPUClass {
VirtIOGPUBaseClass parent;
void (*handle_ctrl)(VirtIODevice *vdev, VirtQueue *vq);
};
struct VirtIOGPUGL { struct VirtIOGPUGL {
struct VirtIOGPU parent_obj; struct VirtIOGPU parent_obj;
}; };