[Spice-devel] [PATCH spice-gtk v4 1/6] gtk: Use gdk_cursor_new_from_name

Pavel Grunt pgrunt at redhat.com
Fri Feb 17 08:02:26 UTC 2017


Hi Christophe,

On Thu, 2017-02-16 at 17:04 +0100, Christophe Fergeau wrote:
> On Tue, Feb 14, 2017 at 07:05:13PM +0100, Pavel Grunt wrote:
> > gdk_cursor_new has been deprecated since Gtk 3.16
> > 
> > Create the cursor when the widget is realized
> 
> You mention this in the commit log which makes it look as if this is
> something new in this patch, but I could not see this kind of change
> in
> the diff?
> 
it is the null check in spice_display_get_blank_cursor()


> Looks good to me anyway,
> 
> Christophe
> 
> > 
> > Also allow to hide the cursor under Wayland
> > 
> > Acked-by: Victor Toso <victortoso at redhat.com>
> > ---
> >  src/spice-widget.c | 24 ++++++++++++++++--------
> >  1 file changed, 16 insertions(+), 8 deletions(-)
> > 
> > diff --git a/src/spice-widget.c b/src/spice-widget.c
> > index 72fbbc8..7678c12 100644
> > --- a/src/spice-widget.c
> > +++ b/src/spice-widget.c
> > @@ -460,12 +460,19 @@ static void spice_display_finalize(GObject
> > *obj)
> >      G_OBJECT_CLASS(spice_display_parent_class)->finalize(obj);
> >  }
> >  
> > -static GdkCursor* get_blank_cursor(void)
> > +static GdkCursor* spice_display_get_blank_cursor(SpiceDisplay
> > *display)
> >  {
> > -    if (g_getenv("SPICE_DEBUG_CURSOR"))
> > -        return gdk_cursor_new(GDK_DOT);
> > +    GdkDisplay *gdk_display;
> > +    const gchar *cursor_name;
> > +    GdkWindow *gdk_window =
> > GDK_WINDOW(gtk_widget_get_window(GTK_WIDGET(display)));
> >  
> > -    return gdk_cursor_new(GDK_BLANK_CURSOR);
> > +    if (!gdk_window)
> > +        return NULL;

here (the NULL check should be explicit, I'll fix it)

> > +
> > +    gdk_display = gdk_window_get_display(gdk_window);
> > +    cursor_name = g_getenv("SPICE_DEBUG_CURSOR") ? "crosshair" :
> > "none";
> > +
> > +    return gdk_cursor_new_from_name(gdk_display, cursor_name);
> >  }
> >  
> >  static gboolean grab_broken(SpiceDisplay *self,
> > GdkEventGrabBroken *event,
> > @@ -676,7 +683,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
> >  
> >      d->grabseq =
> > spice_grab_sequence_new_from_string("Control_L+Alt_L");
> >      d->activeseq = g_new0(gboolean, d->grabseq->nkeysyms);
> > -    d->mouse_cursor = get_blank_cursor();
> >  }
> >  
> >  static GObject *
> > @@ -986,7 +992,7 @@ static gboolean do_pointer_grab(SpiceDisplay
> > *display)
> >      SpiceDisplayPrivate *d = display->priv;
> >      GdkWindow *window =
> > GDK_WINDOW(gtk_widget_get_window(GTK_WIDGET(display)));
> >      GdkGrabStatus status;
> > -    GdkCursor *blank = get_blank_cursor();
> > +    GdkCursor *blank = spice_display_get_blank_cursor(display);
> >      gboolean grab_successful = FALSE;
> >  
> >      if (!gtk_widget_get_realized(GTK_WIDGET(display)))
> > @@ -2579,7 +2585,9 @@ static void cursor_set(SpiceCursorChannel
> > *channel,
> >          }
> >      }
> >  
> > -    g_object_unref(d->mouse_cursor);
> > +    if (d->mouse_cursor != NULL) {
> > +        g_object_unref(d->mouse_cursor);
> > +    }
> >      d->mouse_cursor = cursor;
> >  
> >      update_mouse_pointer(display);
> > @@ -2596,7 +2604,7 @@ static void cursor_hide(SpiceCursorChannel
> > *channel, gpointer data)
> >  
> >      cursor_invalidate(display);
> >      d->show_cursor = d->mouse_cursor;
> > -    d->mouse_cursor = get_blank_cursor();
> > +    d->mouse_cursor = spice_display_get_blank_cursor(display);
> >      update_mouse_pointer(display);
> >  }
> >  
> > -- 
> > 2.11.1
> > 
> > _______________________________________________
> > 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