[PATCH] spice: remove obsolete callback

marcandre.lureau@redhat.com posted 1 patch 3 years, 7 months ago
Test docker-quick@centos7 failed
Test docker-mingw@fedora failed
Test checkpatch failed
Test FreeBSD failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200918100737.91646-1-marcandre.lureau@redhat.com
hw/display/qxl.c   | 4 ++++
ui/spice-display.c | 4 ++++
2 files changed, 8 insertions(+)
[PATCH] spice: remove obsolete callback
Posted by marcandre.lureau@redhat.com 3 years, 7 months ago
From: Marc-André Lureau <marcandre.lureau@redhat.com>

The "attach_worker" callbacks aren't doing anything in QEMU, but they
were mandatory until Spice server commit
6aa1a17c69dc3cc02f338a78b3266e4c00ea1c1a ("spice-qxl: Remove QXLWorker
definition").

Furthermore, the old spelling is deprecated since commit
974692bda1e77af92b71ed43b022439448492cb9 ("spice-qxl: Fix typo in
callback name and remove obsolete parameter")

Compile that code out if Spice server version is recent enough.

Fix compiler deprecation warnings with Spice > 0.14.3 (not released
yet). We may want to wait until newer version is actually released to
apply the patch.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/display/qxl.c   | 4 ++++
 ui/spice-display.c | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 11871340e7..a02072dee0 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -518,12 +518,14 @@ static int qxl_track_command(PCIQXLDevice *qxl, struct QXLCommandExt *ext)
 
 /* spice display interface callbacks */
 
+#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
 static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worker)
 {
     PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
 
     trace_qxl_interface_attach_worker(qxl->id);
 }
+#endif
 
 static void interface_set_compression_level(QXLInstance *sin, int level)
 {
@@ -1156,7 +1158,9 @@ static const QXLInterface qxl_interface = {
     .base.major_version      = SPICE_INTERFACE_QXL_MAJOR,
     .base.minor_version      = SPICE_INTERFACE_QXL_MINOR,
 
+#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
     .attache_worker          = interface_attach_worker,
+#endif
     .set_compression_level   = interface_set_compression_level,
 #if SPICE_NEEDS_SET_MM_TIME
     .set_mm_time             = interface_set_mm_time,
diff --git a/ui/spice-display.c b/ui/spice-display.c
index 19632fdf6c..811936ff7f 100644
--- a/ui/spice-display.c
+++ b/ui/spice-display.c
@@ -500,10 +500,12 @@ void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd)
 
 /* spice display interface callbacks */
 
+#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
 static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worker)
 {
     /* nothing to do */
 }
+#endif
 
 static void interface_set_compression_level(QXLInstance *sin, int level)
 {
@@ -709,7 +711,9 @@ static const QXLInterface dpy_interface = {
     .base.major_version      = SPICE_INTERFACE_QXL_MAJOR,
     .base.minor_version      = SPICE_INTERFACE_QXL_MINOR,
 
+#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
     .attache_worker          = interface_attach_worker,
+#endif
     .set_compression_level   = interface_set_compression_level,
 #if SPICE_NEEDS_SET_MM_TIME
     .set_mm_time             = interface_set_mm_time,
-- 
2.26.2


Re: [PATCH] spice: remove obsolete callback
Posted by Philippe Mathieu-Daudé 3 years, 7 months ago
On 9/18/20 12:07 PM, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The "attach_worker" callbacks aren't doing anything in QEMU, but they
> were mandatory until Spice server commit
> 6aa1a17c69dc3cc02f338a78b3266e4c00ea1c1a ("spice-qxl: Remove QXLWorker
> definition").
> 
> Furthermore, the old spelling is deprecated since commit
> 974692bda1e77af92b71ed43b022439448492cb9 ("spice-qxl: Fix typo in
> callback name and remove obsolete parameter")
> 
> Compile that code out if Spice server version is recent enough.
> 
> Fix compiler deprecation warnings with Spice > 0.14.3 (not released
> yet). We may want to wait until newer version is actually released to
> apply the patch.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  hw/display/qxl.c   | 4 ++++
>  ui/spice-display.c | 4 ++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/hw/display/qxl.c b/hw/display/qxl.c
> index 11871340e7..a02072dee0 100644
> --- a/hw/display/qxl.c
> +++ b/hw/display/qxl.c
> @@ -518,12 +518,14 @@ static int qxl_track_command(PCIQXLDevice *qxl, struct QXLCommandExt *ext)
>  
>  /* spice display interface callbacks */
>  

What about adding in include/ui/spice-display.h:

#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
#define SPACE_ATTACH_WORKER_MANDATORY
#endif

Then use #ifdef SPACE_ATTACH_WORKER_MANDATORY in the source files?

Regardless:
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>  static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worker)
>  {
>      PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
>  
>      trace_qxl_interface_attach_worker(qxl->id);
>  }
> +#endif
>  
>  static void interface_set_compression_level(QXLInstance *sin, int level)
>  {
> @@ -1156,7 +1158,9 @@ static const QXLInterface qxl_interface = {
>      .base.major_version      = SPICE_INTERFACE_QXL_MAJOR,
>      .base.minor_version      = SPICE_INTERFACE_QXL_MINOR,
>  
> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>      .attache_worker          = interface_attach_worker,
> +#endif
>      .set_compression_level   = interface_set_compression_level,
>  #if SPICE_NEEDS_SET_MM_TIME
>      .set_mm_time             = interface_set_mm_time,
> diff --git a/ui/spice-display.c b/ui/spice-display.c
> index 19632fdf6c..811936ff7f 100644
> --- a/ui/spice-display.c
> +++ b/ui/spice-display.c
> @@ -500,10 +500,12 @@ void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd)
>  
>  /* spice display interface callbacks */
>  
> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>  static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worker)
>  {
>      /* nothing to do */
>  }
> +#endif
>  
>  static void interface_set_compression_level(QXLInstance *sin, int level)
>  {
> @@ -709,7 +711,9 @@ static const QXLInterface dpy_interface = {
>      .base.major_version      = SPICE_INTERFACE_QXL_MAJOR,
>      .base.minor_version      = SPICE_INTERFACE_QXL_MINOR,
>  
> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>      .attache_worker          = interface_attach_worker,
> +#endif
>      .set_compression_level   = interface_set_compression_level,
>  #if SPICE_NEEDS_SET_MM_TIME
>      .set_mm_time             = interface_set_mm_time,
> 


Re: [PATCH] spice: remove obsolete callback
Posted by Frediano Ziglio 3 years, 7 months ago
> 
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The "attach_worker" callbacks aren't doing anything in QEMU, but they
> were mandatory until Spice server commit
> 6aa1a17c69dc3cc02f338a78b3266e4c00ea1c1a ("spice-qxl: Remove QXLWorker
> definition").
> 
> Furthermore, the old spelling is deprecated since commit
> 974692bda1e77af92b71ed43b022439448492cb9 ("spice-qxl: Fix typo in
> callback name and remove obsolete parameter")
> 
> Compile that code out if Spice server version is recent enough.
> 
> Fix compiler deprecation warnings with Spice > 0.14.3 (not released
> yet). We may want to wait until newer version is actually released to
> apply the patch.
> 

You could use

#if SPICE_SERVER_VERSION <= 0x000e03 /* release 0.14.3 */

> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  hw/display/qxl.c   | 4 ++++
>  ui/spice-display.c | 4 ++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/hw/display/qxl.c b/hw/display/qxl.c
> index 11871340e7..a02072dee0 100644
> --- a/hw/display/qxl.c
> +++ b/hw/display/qxl.c
> @@ -518,12 +518,14 @@ static int qxl_track_command(PCIQXLDevice *qxl, struct
> QXLCommandExt *ext)
>  
>  /* spice display interface callbacks */
>  
> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>  static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worker)
>  {
>      PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
>  
>      trace_qxl_interface_attach_worker(qxl->id);
>  }
> +#endif
>  
>  static void interface_set_compression_level(QXLInstance *sin, int level)
>  {
> @@ -1156,7 +1158,9 @@ static const QXLInterface qxl_interface = {
>      .base.major_version      = SPICE_INTERFACE_QXL_MAJOR,
>      .base.minor_version      = SPICE_INTERFACE_QXL_MINOR,
>  
> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>      .attache_worker          = interface_attach_worker,
> +#endif

For 0.14.4 you can provide .attached_worker instead, even if version used would
be downgraded will work. Same function could be used (with a cast) for attache_worker.
It depends on the usefulness of the trace call.

>      .set_compression_level   = interface_set_compression_level,
>  #if SPICE_NEEDS_SET_MM_TIME
>      .set_mm_time             = interface_set_mm_time,
> diff --git a/ui/spice-display.c b/ui/spice-display.c
> index 19632fdf6c..811936ff7f 100644
> --- a/ui/spice-display.c
> +++ b/ui/spice-display.c
> @@ -500,10 +500,12 @@ void qemu_spice_display_refresh(SimpleSpiceDisplay
> *ssd)
>  
>  /* spice display interface callbacks */
>  
> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>  static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worker)
>  {
>      /* nothing to do */
>  }
> +#endif
>  
>  static void interface_set_compression_level(QXLInstance *sin, int level)
>  {
> @@ -709,7 +711,9 @@ static const QXLInterface dpy_interface = {
>      .base.major_version      = SPICE_INTERFACE_QXL_MAJOR,
>      .base.minor_version      = SPICE_INTERFACE_QXL_MINOR,
>  
> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>      .attache_worker          = interface_attach_worker,
> +#endif
>      .set_compression_level   = interface_set_compression_level,
>  #if SPICE_NEEDS_SET_MM_TIME
>      .set_mm_time             = interface_set_mm_time,

Frediano


Re: [PATCH] spice: remove obsolete callback
Posted by Gerd Hoffmann 3 years, 7 months ago
  Hi,

> Fix compiler deprecation warnings with Spice > 0.14.3 (not released
> yet). We may want to wait until newer version is actually released to
> apply the patch.

Probably makes sense, just in case.  It's not like this is an urgent
fix.

> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>  static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worker)
>  {
>      PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
>  
>      trace_qxl_interface_attach_worker(qxl->id);
>  }
> +#endif

> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>  static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worker)
>  {
>      /* nothing to do */
>  }
> +#endif

While being at it, can we also drop one of the dummy callbacks?

The tracepoint can go away too I think, given qemu doesn't do anything
in the callback anyway.

> +#if SPICE_SERVER_VERSION < 0x000e04 /* release 0.14.4 */
>      .attache_worker          = interface_attach_worker,
> +#endif
>      .set_compression_level   = interface_set_compression_level,
>  #if SPICE_NEEDS_SET_MM_TIME
>      .set_mm_time             = interface_set_mm_time,

Add a SPICE_NEEDS_ATTACH_WORKER #define for consistency?

take care,
  Gerd