[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 3/8] ui/spice-app: don't use qemu_chr_open_spice_port directly
From: |
Gerd Hoffmann |
Subject: |
[PULL 3/8] ui/spice-app: don't use qemu_chr_open_spice_port directly |
Date: |
Thu, 15 Oct 2020 14:53:17 +0200 |
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 <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
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 93e105c6ee82..7e0550c79fdd 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)
--
2.27.0
- [PULL 0/8] Modules 20201015 patches, Gerd Hoffmann, 2020/10/15
- [PULL 2/8] modules: update qom object module comment, Gerd Hoffmann, 2020/10/15
- [PULL 8/8] chardev/spice: build spice chardevs as module, Gerd Hoffmann, 2020/10/15
- [PULL 3/8] ui/spice-app: don't use qemu_chr_open_spice_port directly,
Gerd Hoffmann <=
- [PULL 1/8] module: silence errors for module_load_qom_all()., Gerd Hoffmann, 2020/10/15
- [PULL 5/8] chardev/spice: simplify chardev setup, Gerd Hoffmann, 2020/10/15
- [PULL 6/8] meson: add spice_headers dependency., Gerd Hoffmann, 2020/10/15
- [PULL 4/8] chardev/spice: make qemu_chr_open_spice_port static, Gerd Hoffmann, 2020/10/15
- [PULL 7/8] meson: add spice dependency to core spice source files., Gerd Hoffmann, 2020/10/15
- Re: [PULL 0/8] Modules 20201015 patches, Peter Maydell, 2020/10/16