[Spice-devel] [PATCH spice-gtk v2 2/3] Deprecate "cursor-set" signal

Victor Toso victortoso at redhat.com
Wed May 24 07:11:54 UTC 2017


Hi,

On Tue, May 23, 2017 at 04:56:25PM +0200, Pavel Grunt wrote:
> Use cursor notify instead
> 
> Related:
> https://bugzilla.redhat.com/show_bug.cgi?id=1411380
> ---
>  src/channel-cursor.c |  4 +++-
>  src/spice-widget.c   | 31 +++++++++++++++++--------------
>  2 files changed, 20 insertions(+), 15 deletions(-)
> 
> diff --git a/src/channel-cursor.c b/src/channel-cursor.c
> index 53b1ecf..cddba03 100644
> --- a/src/channel-cursor.c
> +++ b/src/channel-cursor.c
> @@ -208,11 +208,13 @@ static void spice_cursor_channel_class_init(SpiceCursorChannelClass *klass)
>       *
>       * The #SpiceCursorChannel::cursor-set signal is emitted to modify
>       * cursor aspect and position on the display area.
> +     *
> +     * Deprecated: 0.34: Use #SpiceCursorChannel:cursor notify instead.
>       **/
>      signals[SPICE_CURSOR_SET] =
>          g_signal_new("cursor-set",
>                       G_OBJECT_CLASS_TYPE(gobject_class),
> -                     G_SIGNAL_RUN_FIRST,
> +                     G_SIGNAL_RUN_FIRST | G_SIGNAL_DEPRECATED,
>                       G_STRUCT_OFFSET(SpiceCursorChannelClass, cursor_set),
>                       NULL, NULL,
>                       g_cclosure_user_marshal_VOID__INT_INT_INT_INT_POINTER,
> diff --git a/src/spice-widget.c b/src/spice-widget.c
> index 8203d55..b1c8ab1 100644
> --- a/src/spice-widget.c
> +++ b/src/spice-widget.c
> @@ -2635,29 +2635,32 @@ static void mark(SpiceDisplay *display, gint mark)
>  }
>  
>  static void cursor_set(SpiceCursorChannel *channel,
> -                       gint width, gint height, gint hot_x, gint hot_y,
> -                       gpointer rgba, gpointer data)
> +                       G_GNUC_UNUSED GParamSpec *pspec,
> +                       gpointer data)
>  {
>      SpiceDisplay *display = data;
>      SpiceDisplayPrivate *d = display->priv;
>      GdkCursor *cursor = NULL;
> +    SpiceCursorShape *cursor_shape = NULL;

I would not set it to NULL

Other then that
Acked-by: Victor Toso <victortoso at redhat.com>

>  
>      cursor_invalidate(display);
>  
> -    g_clear_object(&d->mouse_pixbuf);
> -
> -    if (rgba != NULL) {
> -        d->mouse_pixbuf = gdk_pixbuf_new_from_data(g_memdup(rgba, width * height * 4),
> +    g_object_get(G_OBJECT(channel), "cursor", &cursor_shape, NULL);
> +    if (cursor_shape != NULL && cursor_shape->data != NULL) {
> +        g_clear_object(&d->mouse_pixbuf);
> +        d->mouse_pixbuf = gdk_pixbuf_new_from_data(cursor_shape->data,
>                                                     GDK_COLORSPACE_RGB,
>                                                     TRUE, 8,
> -                                                   width,
> -                                                   height,
> -                                                   width * 4,
> -                                                   (GdkPixbufDestroyNotify)g_free, NULL);
> -        d->mouse_hotspot.x = hot_x;
> -        d->mouse_hotspot.y = hot_y;
> +                                                   cursor_shape->width,
> +                                                   cursor_shape->height,
> +                                                   cursor_shape->width * 4,
> +                                                   NULL, NULL);
> +        d->mouse_hotspot.x = cursor_shape->hot_spot_x;
> +        d->mouse_hotspot.y = cursor_shape->hot_spot_y;
>          cursor = gdk_cursor_new_from_pixbuf(gtk_widget_get_display(GTK_WIDGET(display)),
> -                                            d->mouse_pixbuf, hot_x, hot_y);
> +                                            d->mouse_pixbuf,
> +                                            d->mouse_hotspot.x,
> +                                            d->mouse_hotspot.y);
>      } else
>          g_warn_if_reached();
>  
> @@ -2958,7 +2961,7 @@ static void channel_new(SpiceSession *s, SpiceChannel *channel, gpointer data)
>          if (id != d->channel_id)
>              return;
>          d->cursor = SPICE_CURSOR_CHANNEL(channel);
> -        spice_g_signal_connect_object(channel, "cursor-set",
> +        spice_g_signal_connect_object(channel, "notify::cursor",
>                                        G_CALLBACK(cursor_set), display, 0);
>          spice_g_signal_connect_object(channel, "cursor-move",
>                                        G_CALLBACK(cursor_move), display, 0);
> -- 
> 2.13.0
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170524/fe6841e9/attachment.sig>


More information about the Spice-devel mailing list