diff --git a/configure b/configure index b3c3e5bebf..38619c4498 100755 --- a/configure +++ b/configure @@ -254,6 +254,7 @@ External library support: --enable-libxcb enable X11 grabbing using XCB [auto] --enable-libxcb-shm enable X11 grabbing shm communication [auto] --enable-libxcb-xfixes enable X11 grabbing mouse rendering [auto] + --enable-libxcb-shape enable X11 grabbing shape rendering [auto] --enable-libxvid enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists [no] --enable-libzmq enable message passing via libzmq [no] @@ -1386,6 +1387,7 @@ EXTERNAL_LIBRARY_LIST=" libxavs libxcb libxcb_shm + libxcb_shape libxcb_xfixes libxvid libzmq @@ -5047,8 +5049,13 @@ if enabled libxcb; then enabled libxcb_xfixes && die "ERROR: libxcb_xfixes not found"; } && enable libxcb_xfixes; } - add_cflags $xcb_cflags $xcb_shm_cflags $xcb_xfixes_cflags - add_extralibs $xcb_libs $xcb_shm_libs $xcb_xfixes_libs + disabled libxcb_shape || { + check_pkg_config xcb-shape xcb/shape.h xcb_shape_get_rectangles || { + enabled libxcb_shape && die "ERROR: libxcb_shape not found"; + } && enable libxcb_shape; } + + add_cflags $xcb_cflags $xcb_shm_cflags $xcb_xfixes_cflags $xcb_shape_cflags + add_extralibs $xcb_libs $xcb_shm_libs $xcb_xfixes_libs $xcb_shape_libs fi fi diff --git a/libavdevice/xcbgrab.c b/libavdevice/xcbgrab.c index 1657b7d8d8..df8de20459 100644 --- a/libavdevice/xcbgrab.c +++ b/libavdevice/xcbgrab.c @@ -33,6 +33,10 @@ #include #endif +#if CONFIG_LIBXCB_SHAPE +#include +#endif + #include "libavformat/avformat.h" #include "libavformat/internal.h" @@ -576,7 +580,7 @@ static void setup_window(AVFormatContext *s) XCB_COPY_FROM_PARENT, mask, values); -#if XCB_SHAPE_RECTANGLES +#if CONFIG_LIBXCB_SHAPE xcb_shape_rectangles(c->conn, XCB_SHAPE_SO_SUBTRACT, XCB_SHAPE_SK_BOUNDING, XCB_CLIP_ORDERING_UNSORTED, c->window,