diff options
-rw-r--r-- | hw/xwayland/xwayland-glamor.c | 14 | ||||
-rw-r--r-- | hw/xwayland/xwayland-glamor.h | 4 |
2 files changed, 18 insertions, 0 deletions
diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c index af227bb03..b714f9be0 100644 --- a/hw/xwayland/xwayland-glamor.c +++ b/hw/xwayland/xwayland-glamor.c @@ -919,6 +919,20 @@ xwl_glamor_needs_n_buffering(struct xwl_screen *xwl_screen) XWL_EGL_BACKEND_NEEDS_N_BUFFERING); } +PixmapPtr +xwl_glamor_create_pixmap_for_window(struct xwl_window *xwl_window) +{ + struct xwl_screen *xwl_screen = xwl_window->xwl_screen; + + if (!xwl_screen->glamor || !xwl_screen->egl_backend) + return NullPixmap; + + if (xwl_screen->egl_backend->create_pixmap_for_window) + return xwl_screen->egl_backend->create_pixmap_for_window(xwl_window); + else + return NullPixmap; +} + void xwl_glamor_init_backends(struct xwl_screen *xwl_screen, Bool use_eglstream) { diff --git a/hw/xwayland/xwayland-glamor.h b/hw/xwayland/xwayland-glamor.h index 0ecd25b38..c2eed95e9 100644 --- a/hw/xwayland/xwayland-glamor.h +++ b/hw/xwayland/xwayland-glamor.h @@ -104,6 +104,9 @@ struct xwl_egl_backend { * is set up on. */ drmDevice *(*get_main_device)(struct xwl_screen *xwl_screen); + + /* Direct hook to create the backing pixmap for a window */ + PixmapPtr (*create_pixmap_for_window)(struct xwl_window *xwl_window); }; #ifdef XWL_HAS_GLAMOR @@ -142,6 +145,7 @@ Bool xwl_glamor_get_modifiers(ScreenPtr screen, uint32_t format, Bool xwl_glamor_get_drawable_modifiers(DrawablePtr drawable, uint32_t format, uint32_t *num_modifiers, uint64_t **modifiers); Bool xwl_glamor_check_flip(PixmapPtr pixmap); +PixmapPtr xwl_glamor_create_pixmap_for_window (struct xwl_window *xwl_window); #ifdef XV /* glamor Xv Adaptor */ |