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@xxxxxxxxxx> > > > > > 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@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel