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

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

 



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;
 
     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




[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]