* Gerd Hoffmann (kraxel@redhat.com) wrote:
> Add QemuSpiceOps struct. This struct holds function pointers to the
> spice functions. It will be initialized with pointers to the stub
> functions. When spice gets initialized the function pointers will
> be re-written to the real functions.
>
> The spice stubs will move from qemu-spice.h to spice-module.c for that,
> because they will be needed for both "CONFIG_SPICE=n" and "CONFIG_SPICE=y
> but spice module not loaded" cases.
>
> This patch adds the infrastructure and starts with moving
> qemu_spice_migrate_info() to QemuSpiceOps.
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
> include/ui/qemu-spice-module.h | 5 +++++
> include/ui/qemu-spice.h | 5 -----
> monitor/misc.c | 2 +-
> ui/spice-core.c | 5 +++++
> ui/spice-module.c | 10 ++++++++++
> 5 files changed, 21 insertions(+), 6 deletions(-)
>
> diff --git a/include/ui/qemu-spice-module.h b/include/ui/qemu-spice-module.h
> index 1af0e659a109..7a9963dd5810 100644
> --- a/include/ui/qemu-spice-module.h
> +++ b/include/ui/qemu-spice-module.h
> @@ -18,6 +18,11 @@
> #ifndef QEMU_SPICE_MODULE_H
> #define QEMU_SPICE_MODULE_H
>
> +struct QemuSpiceOps {
> + int (*migrate_info)(const char *h, int p, int t, const char *s);
> +};
> +
I realise that's mostly a move, but if you need to repost, can you
expand those 4 single character parameter names?
Dave
> extern int using_spice;
> +extern struct QemuSpiceOps qemu_spice;
>
> #endif
> diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h
> index ab523788b9a9..3157016c2bb4 100644
> --- a/include/ui/qemu-spice.h
> +++ b/include/ui/qemu-spice.h
> @@ -60,11 +60,6 @@ static inline int qemu_spice_set_pw_expire(time_t expires)
> {
> return -1;
> }
> -static inline int qemu_spice_migrate_info(const char *h, int p, int t,
> - const char *s)
> -{
> - return -1;
> -}
>
> static inline int qemu_spice_display_add_client(int csock, int skipauth,
> int tls)
> diff --git a/monitor/misc.c b/monitor/misc.c
> index 4a859fb24a21..32e6a8c13d07 100644
> --- a/monitor/misc.c
> +++ b/monitor/misc.c
> @@ -437,7 +437,7 @@ void qmp_client_migrate_info(const char *protocol, const char *hostname,
> return;
> }
>
> - if (qemu_spice_migrate_info(hostname,
> + if (qemu_spice.migrate_info(hostname,
> has_port ? port : -1,
> has_tls_port ? tls_port : -1,
> cert_subject)) {
> diff --git a/ui/spice-core.c b/ui/spice-core.c
> index a7fa5743585f..b03d743cf9b9 100644
> --- a/ui/spice-core.c
> +++ b/ui/spice-core.c
> @@ -993,8 +993,13 @@ int qemu_spice_display_is_running(SimpleSpiceDisplay *ssd)
> return spice_display_is_running;
> }
>
> +static struct QemuSpiceOps real_spice_ops = {
> + .migrate_info = qemu_spice_migrate_info,
> +};
> +
> static void spice_register_config(void)
> {
> + qemu_spice = real_spice_ops;
> qemu_add_opts(&qemu_spice_opts);
> }
> opts_init(spice_register_config);
> diff --git a/ui/spice-module.c b/ui/spice-module.c
> index f86b0ac517dc..f1939545a684 100644
> --- a/ui/spice-module.c
> +++ b/ui/spice-module.c
> @@ -21,3 +21,13 @@
> #include "ui/qemu-spice-module.h"
>
> int using_spice;
> +
> +static int qemu_spice_migrate_info_stub(const char *h, int p, int t,
> + const char *s)
> +{
> + return -1;
> +}
> +
> +struct QemuSpiceOps qemu_spice = {
> + .migrate_info = qemu_spice_migrate_info_stub,
> +};
> --
> 2.27.0
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK