[PATCH RFC weston 3/4] compositor-x11: Remove support for ancient XCB

Daniel Stone daniels at collabora.com
Tue Nov 29 17:00:02 UTC 2016


We had two non-pkg-config check paths in the configure script, to
support XCB functionality used before XCB had had an accompanying
release: xcb_poll_for_queued_event (released in 1.8, 2012), and a
usable XKB event mechanism (released in 1.9, 2013).

Convert the former to a version-based hard dependency, and the latter to
a version-based soft dependency. This avoids two compiler checks.

Signed-off-by: Daniel Stone <daniels at collabora.com>
---
 configure.ac               | 21 ++-------------------
 libweston/compositor-x11.c |  9 ++-------
 2 files changed, 4 insertions(+), 26 deletions(-)

diff --git a/configure.ac b/configure.ac
index 1e251bf..7d5eaa1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -183,29 +183,12 @@ AC_ARG_ENABLE(x11-compositor, [  --enable-x11-compositor],,
 	      enable_x11_compositor=yes)
 AM_CONDITIONAL(ENABLE_X11_COMPOSITOR, test x$enable_x11_compositor = xyes)
 if test x$enable_x11_compositor = xyes; then
-  PKG_CHECK_MODULES([XCB], xcb)
-  xcb_save_LIBS=$LIBS
-  xcb_save_CFLAGS=$CFLAGS
-  CFLAGS=$XCB_CFLAGS
-  LIBS=$XCB_LIBS
-  AC_CHECK_FUNCS([xcb_poll_for_queued_event])
-  LIBS=$xcb_save_LIBS
-  CFLAGS=$xcb_save_CFLAGS
-
+  PKG_CHECK_MODULES([XCB], xcb >= 1.8)
   X11_COMPOSITOR_MODULES="x11 x11-xcb xcb-shm"
 
-  PKG_CHECK_MODULES(X11_COMPOSITOR_XKB, [xcb-xkb],
+  PKG_CHECK_MODULES(X11_COMPOSITOR_XKB, [xcb-xkb >= 1.9],
 		    [have_xcb_xkb="yes"], [have_xcb_xkb="no"])
   if test "x$have_xcb_xkb" = xyes; then
-	# Most versions of XCB have totally broken XKB bindings, where the
-	# events don't work.  Make sure we can actually use them.
-	xcb_xkb_save_CFLAGS=$CFLAGS
-	CFLAGS=$X11_COMPOSITOR_XKB_CFLAGS
-	AC_CHECK_MEMBER([struct xcb_xkb_state_notify_event_t.xkbType],
-			[], [have_xcb_xkb=no], [[#include <xcb/xkb.h>]])
-	CFLAGS=$xcb_xkb_save_CFLAGS
-  fi
-  if test "x$have_xcb_xkb" = xyes; then
 	X11_COMPOSITOR_MODULES="$X11_COMPOSITOR_MODULES xcb-xkb"
 	AC_DEFINE([HAVE_XCB_XKB], [1], [libxcb supports XKB protocol])
   fi
diff --git a/libweston/compositor-x11.c b/libweston/compositor-x11.c
index 34ef854..627bb15 100644
--- a/libweston/compositor-x11.c
+++ b/libweston/compositor-x11.c
@@ -1298,15 +1298,10 @@ static int
 x11_backend_next_event(struct x11_backend *b,
 		       xcb_generic_event_t **event, uint32_t mask)
 {
-	if (mask & WL_EVENT_READABLE) {
+	if (mask & WL_EVENT_READABLE)
 		*event = xcb_poll_for_event(b->conn);
-	} else {
-#ifdef HAVE_XCB_POLL_FOR_QUEUED_EVENT
+	else
 		*event = xcb_poll_for_queued_event(b->conn);
-#else
-		*event = xcb_poll_for_event(b->conn);
-#endif
-	}
 
 	return *event != NULL;
 }
-- 
2.9.3



More information about the wayland-devel mailing list