Re: [PATCH spice-gtk] widget: Return early on cursor set without shape

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Fri, May 26, 2017 at 04:39:49PM +0200, Pavel Grunt wrote:
> A cursor pixbuf is required in other functions to work properly

From what I checked, yes. Plus this is unlikely to happen (I never saw
this warning for instance)

Acked-by: Victor Toso <victortoso@xxxxxxxxxx>
> ---
>  src/spice-widget.c | 37 +++++++++++++++++++------------------
>  1 file changed, 19 insertions(+), 18 deletions(-)
> 
> diff --git a/src/spice-widget.c b/src/spice-widget.c
> index d42924b..1a1d5a6 100644
> --- a/src/spice-widget.c
> +++ b/src/spice-widget.c
> @@ -2643,26 +2643,27 @@ static void cursor_set(SpiceCursorChannel *channel,
>      GdkCursor *cursor = NULL;
>      SpiceCursorShape *cursor_shape;
>  
> -    cursor_invalidate(display);
> -
>      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,
> -                                                   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,
> -                                            d->mouse_hotspot.x,
> -                                            d->mouse_hotspot.y);
> -    } else
> +    if (G_UNLIKELY(cursor_shape == NULL || cursor_shape->data == NULL)) {
>          g_warn_if_reached();
> +        return;
> +    }
> +
> +    cursor_invalidate(display);
> +    g_clear_object(&d->mouse_pixbuf);
> +    d->mouse_pixbuf = gdk_pixbuf_new_from_data(cursor_shape->data,
> +                                               GDK_COLORSPACE_RGB,
> +                                               TRUE, 8,
> +                                               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,
> +                                        d->mouse_hotspot.x,
> +                                        d->mouse_hotspot.y);
>  
>  #if HAVE_EGL
>      if (egl_enabled(d))
> -- 
> 2.13.0
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/spice-devel

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]