On cursor unrealize, the associated pixmap is destroyed, make sure we clear the pointer from the private resource and check for the value being non-null when setting or destroying the cursor.
Signed-off-by: Olivier Fourdan <ofour...@redhat.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96246 --- Hi, Sending this patch as an RFC, I am not sure if it cures just the effects of a more complex issue, or if it's the right fix for the bug mentioned above. For Fedora we have quite of few similar reports that appeared after we switched to 1.18.3, and the most likely related change is commit 1815540 xwayland: Clear pending cursor frame callbacks on pointer enter But I am not entirely sure how such a change can cause this issue. Anyway, if you have a better understanding of the problem, free free to chime in! :) Cheers, Olivier hw/xwayland/xwayland-cursor.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/xwayland/xwayland-cursor.c b/hw/xwayland/xwayland-cursor.c index 76729db..44fadf4 100644 --- a/hw/xwayland/xwayland-cursor.c +++ b/hw/xwayland/xwayland-cursor.c @@ -78,6 +78,10 @@ xwl_unrealize_cursor(DeviceIntPtr device, ScreenPtr screen, CursorPtr cursor) PixmapPtr pixmap; pixmap = dixGetPrivate(&cursor->devPrivates, &xwl_cursor_private_key); + if (!pixmap) + return TRUE; + + dixSetPrivate(&cursor->devPrivates, &xwl_cursor_private_key, NULL); return xwl_shm_destroy_pixmap(pixmap); } @@ -122,6 +126,9 @@ xwl_seat_set_cursor(struct xwl_seat *xwl_seat) cursor = xwl_seat->x_cursor; pixmap = dixGetPrivate(&cursor->devPrivates, &xwl_cursor_private_key); + if (!pixmap) + return; + stride = cursor->bits->width * 4; if (cursor->bits->argb) memcpy(pixmap->devPrivate.ptr, -- 2.7.4 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel