Gerd Hoffmann <kra...@redhat.com> writes: > Makes gtk ui play nicely with qxl (and vmware_svga) > as you can actually see your pointer now ;) > > Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > --- > ui/gtk.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/ui/gtk.c b/ui/gtk.c > index 7599ff4..512e974 100644 > --- a/ui/gtk.c > +++ b/ui/gtk.c > @@ -303,6 +303,29 @@ static void gd_refresh(DisplayChangeListener *dcl) > graphic_hw_update(dcl->con); > } > > +static void gd_mouse_set(DisplayChangeListener *dcl, > + int x, int y, int visible) > +{ > + /* should warp pointer to x, y here */
This is just a matter of doing: gdk_window_get_root_coords(window, x, y, &x_root, &y_root); gdk_display_warp_pointer(display, screen, x_root, y_root); > +} > + > +static void gd_cursor_define(DisplayChangeListener *dcl, > + QEMUCursor *c) > +{ > + GtkDisplayState *s = container_of(dcl, GtkDisplayState, dcl); > + GdkPixbuf *pixbuf; > + GdkCursor *cursor; > + > + pixbuf = gdk_pixbuf_new_from_data((guchar *)(c->data), > + GDK_COLORSPACE_RGB, true, 8, > + c->width, c->height, c->width * 4, > + NULL, NULL); > + cursor = gdk_cursor_new_from_pixbuf(gdk_display_get_default(), You should get the display from the drawing_area widget. > + pixbuf, c->hot_x, c->hot_y); > + gdk_window_set_cursor(s->drawing_area->window, cursor); > + g_object_unref(pixbuf); You should also dereference the cursor here. Regards, Anthony Liguori