diff --git a/clients/dnd.c b/clients/dnd.c index 32dec967..de1ca473 100644 --- a/clients/dnd.c +++ b/clients/dnd.c @@ -106,7 +106,8 @@ item_create(struct display *display, int x, int y, int seed) rect.width = item_width; rect.height = item_height; - item->surface = display_create_surface(display, NULL, &rect, 0); + item->surface = + display_create_surface(display, NULL, &rect, SURFACE_SHM); item->x = x; item->y = y; @@ -322,7 +323,8 @@ create_drag_cursor(struct dnd_drag *dnd_drag, rectangle.width = item_width + 2 * pointer->width; rectangle.height = item_height + 2 * pointer->height; - surface = display_create_surface(dnd->display, NULL, &rectangle, 0); + surface = display_create_surface(dnd->display, NULL, &rectangle, + SURFACE_SHM); cr = cairo_create(surface); cairo_translate(cr, pointer->width, pointer->height); diff --git a/clients/window.c b/clients/window.c index 4c94d16b..bab5d766 100644 --- a/clients/window.c +++ b/clients/window.c @@ -618,7 +618,7 @@ display_create_surface(struct display *display, if (check_size(rectangle) < 0) return NULL; #ifdef HAVE_CAIRO_EGL - if (display->dpy) + if (display->dpy && !(flags & SURFACE_SHM)) return display_create_egl_window_surface(display, surface, flags, diff --git a/clients/window.h b/clients/window.h index e1a9aa2b..7e968d0e 100644 --- a/clients/window.h +++ b/clients/window.h @@ -112,6 +112,7 @@ display_get_image_for_egl_image_surface(struct display *display, #endif #define SURFACE_OPAQUE 0x01 +#define SURFACE_SHM 0x02 cairo_surface_t * display_create_surface(struct display *display,