From e220cf866267fbca3dae16f68ec01b67a4beb805 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 14 Oct 2020 14:11:15 +0200 Subject: [PATCH] ui/spice-app: don't use qemu_chr_open_spice_port directly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Save the parent object's open function pointer in the (new) VCChardevClass struct instead before overwriting it, so we can look it up when needed. Signed-off-by: Gerd Hoffmann Reviewed-by: Philippe Mathieu-Daudé Message-id: 20201014121120.13482-3-kraxel@redhat.com --- ui/spice-app.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ui/spice-app.c b/ui/spice-app.c index 93e105c6ee..7e0550c79f 100644 --- a/ui/spice-app.c +++ b/ui/spice-app.c @@ -44,11 +44,15 @@ static char *sock_path; struct VCChardev { SpiceChardev parent; }; -typedef struct VCChardev VCChardev; + +struct VCChardevClass { + ChardevClass parent; + void (*parent_open)(Chardev *chr, ChardevBackend *backend, + bool *be_opened, Error **errp); +}; #define TYPE_CHARDEV_VC "chardev-vc" -DECLARE_INSTANCE_CHECKER(VCChardev, VC_CHARDEV, - TYPE_CHARDEV_VC) +OBJECT_DECLARE_TYPE(VCChardev, VCChardevClass, CHARDEV_VC) static ChardevBackend * chr_spice_backend_new(void) @@ -66,6 +70,7 @@ static void vc_chr_open(Chardev *chr, bool *be_opened, Error **errp) { + VCChardevClass *vc = CHARDEV_VC_GET_CLASS(chr); ChardevBackend *be; const char *fqdn = NULL; @@ -80,7 +85,7 @@ static void vc_chr_open(Chardev *chr, be = chr_spice_backend_new(); be->u.spiceport.data->fqdn = fqdn ? g_strdup(fqdn) : g_strdup_printf("org.qemu.console.%s", chr->label); - qemu_chr_open_spice_port(chr, be, be_opened, errp); + vc->parent_open(chr, be, be_opened, errp); qapi_free_ChardevBackend(be); } @@ -91,8 +96,11 @@ static void vc_chr_set_echo(Chardev *chr, bool echo) static void char_vc_class_init(ObjectClass *oc, void *data) { + VCChardevClass *vc = CHARDEV_VC_CLASS(oc); ChardevClass *cc = CHARDEV_CLASS(oc); + vc->parent_open = cc->open; + cc->parse = qemu_chr_parse_vc; cc->open = vc_chr_open; cc->chr_set_echo = vc_chr_set_echo; @@ -103,6 +111,7 @@ static const TypeInfo char_vc_type_info = { .parent = TYPE_CHARDEV_SPICEPORT, .instance_size = sizeof(VCChardev), .class_init = char_vc_class_init, + .class_size = sizeof(VCChardevClass), }; static void spice_app_atexit(void)