diff --git a/libavdevice/xcbgrab.c b/libavdevice/xcbgrab.c
index c3780028a3f69678871e9ef583ecfc4c17dcc7ec..b162763bac817fbdb63c90345c596d510105fe28 100644
--- a/libavdevice/xcbgrab.c
+++ b/libavdevice/xcbgrab.c
@@ -580,11 +580,13 @@ static void setup_window(AVFormatContext *s)
                       XCB_COPY_FROM_PARENT,
                       mask, values);
 
+#if XCB_SHAPE_RECTANGLES
     xcb_shape_rectangles(c->conn, XCB_SHAPE_SO_SUBTRACT,
                          XCB_SHAPE_SK_BOUNDING, XCB_CLIP_ORDERING_UNSORTED,
                          c->window,
                          c->region_border, c->region_border,
                          1, &rect);
+#endif
 
     xcb_map_window(c->conn, c->window);