From fe42a4eb4ec466bce3f686b38a0221a198c0afb5 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Mon, 31 Mar 2014 17:22:23 -0400 Subject: [PATCH] screen: Move XDefineCursor on the root window here This is really an X11 front-end thing, so it doesn't belong in the cursor tracker, which is a back-end thing. --- src/core/meta-cursor-tracker.c | 19 +++---------------- src/core/screen.c | 13 ++++++++++++- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/core/meta-cursor-tracker.c b/src/core/meta-cursor-tracker.c index 8b6561eae..a5ceb2e72 100644 --- a/src/core/meta-cursor-tracker.c +++ b/src/core/meta-cursor-tracker.c @@ -399,23 +399,10 @@ void meta_cursor_tracker_set_root_cursor (MetaCursorTracker *tracker, MetaCursor cursor) { - Cursor xcursor; - MetaDisplay *display = tracker->screen->display; + g_clear_pointer (&tracker->root_cursor, meta_cursor_reference_unref); + tracker->root_cursor = meta_cursor_reference_from_theme (tracker, cursor); - /* First create a cursor for X11 applications that don't specify their own */ - xcursor = meta_display_create_x_cursor (display, cursor); - - XDefineCursor (display->xdisplay, tracker->screen->xroot, xcursor); - XFlush (display->xdisplay); - XFreeCursor (display->xdisplay, xcursor); - - /* Now update the real root cursor */ - if (meta_is_wayland_compositor ()) - { - g_clear_pointer (&tracker->root_cursor, meta_cursor_reference_unref); - tracker->root_cursor = meta_cursor_reference_from_theme (tracker, cursor); - sync_cursor (tracker); - } + sync_cursor (tracker); } static gboolean diff --git a/src/core/screen.c b/src/core/screen.c index 283544549..38f8da8c7 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -1384,7 +1384,18 @@ update_focus_mode (MetaScreen *screen) void meta_screen_update_cursor (MetaScreen *screen) { - meta_cursor_tracker_set_root_cursor (screen->cursor_tracker, screen->current_cursor); + MetaDisplay *display = screen->display; + MetaCursor cursor = screen->current_cursor; + Cursor xcursor; + + meta_cursor_tracker_set_root_cursor (screen->cursor_tracker, cursor); + + /* Set a cursor for X11 applications that don't specify their own */ + xcursor = meta_display_create_x_cursor (display, cursor); + + XDefineCursor (display->xdisplay, screen->xroot, xcursor); + XFlush (display->xdisplay); + XFreeCursor (display->xdisplay, xcursor); } void