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@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, > - (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@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