diff --git a/cogl/cogl/cogl-dma-buf-handle.h b/cogl/cogl/cogl-dma-buf-handle.h index c505ff76c..408156684 100644 --- a/cogl/cogl/cogl-dma-buf-handle.h +++ b/cogl/cogl/cogl-dma-buf-handle.h @@ -141,4 +141,6 @@ cogl_dma_buf_handle_get_offset (CoglDmaBufHandle *dmabuf_handle); COGL_EXPORT int cogl_dma_buf_handle_get_bpp (CoglDmaBufHandle *dmabuf_handle); +G_DEFINE_AUTOPTR_CLEANUP_FUNC (CoglDmaBufHandle, cogl_dma_buf_handle_free) + #endif /* __COGL_DMA_BUF_HANDLE_H__ */ diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c index 5a59d7dd5..224538787 100644 --- a/src/backends/native/meta-backend-native.c +++ b/src/backends/native/meta-backend-native.c @@ -160,6 +160,13 @@ maybe_disable_screen_cast_dma_bufs (MetaBackendNative *native) MetaBackend *backend = META_BACKEND (native); MetaRenderer *renderer = meta_backend_get_renderer (backend); MetaScreenCast *screen_cast = meta_backend_get_screen_cast (backend); + ClutterBackend *clutter_backend = + meta_backend_get_clutter_backend (backend); + CoglContext *cogl_context = + clutter_backend_get_cogl_context (clutter_backend); + CoglRenderer *cogl_renderer = cogl_context_get_renderer (cogl_context); + g_autoptr (GError) error = NULL; + g_autoptr (CoglDmaBufHandle) dmabuf_handle = NULL; if (!meta_renderer_is_hardware_accelerated (renderer)) { @@ -167,6 +174,16 @@ maybe_disable_screen_cast_dma_bufs (MetaBackendNative *native) "(not hardware accelerated)"); meta_screen_cast_disable_dma_bufs (screen_cast); } + + dmabuf_handle = cogl_renderer_create_dma_buf (cogl_renderer, + 1, 1, + &error); + if (!dmabuf_handle) + { + g_message ("Disabling DMA buffer screen sharing " + "(implicit modifiers not supported)"); + meta_screen_cast_disable_dma_bufs (screen_cast); + } } #endif /* HAVE_REMOTE_DESKTOP */