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

Pavel Grunt pgrunt at redhat.com
Thu May 25 13:15:21 UTC 2017


On Wed, 2017-05-24 at 09:11 +0200, Victor Toso wrote:
> 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_IN
> > T_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

sorry, I missed it, fixed locally.

Thanks,
Pavel

> 
> 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,
> > -                                                   (GdkPixbufDest
> > royNotify)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(displ
> > ay)),
> > -                                            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


More information about the Spice-devel mailing list