summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2012-05-12 18:00:49 (GMT)
committer John Mark Bell <jmb@netsurf-browser.org>2012-05-12 18:00:49 (GMT)
commitcf0c457411b017c219be0c968836b0f748e1b12c (patch)
tree23b3e4d1de33f76d40414e101a09feba5aa8aa68
parent51d8264eb1e8f705635cd0af2c0e9dddaf855711 (diff)
downloadlibnsfb-cf0c457411b017c219be0c968836b0f748e1b12c.tar.gz
libnsfb-cf0c457411b017c219be0c968836b0f748e1b12c.tar.bz2
Speculative support for xcb-util 0.3.8 and xcbproto 1.6
svn path=/trunk/libnsfb/; revision=13920
-rw-r--r--Makefile26
-rw-r--r--src/surface/x.c13
2 files changed, 35 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index da61c37..2da6d43 100644
--- a/Makefile
+++ b/Makefile
@@ -32,10 +32,30 @@ ifeq ($(NSFB_SDL_AVAILABLE),yes)
endif
ifeq ($(NSFB_XCB_AVAILABLE),yes)
- $(eval $(call pkg_config_package_min_version,NSFB_XCB_NEW_API,xcb,0.23))
+ # Size hint allocators were removed in xcb-icccm 0.3.0
+ $(eval $(call pkg_config_package_min_version,NSFB_XCB_ICCCM_SIZE_HINTS,xcb-icccm,0.3.0))
+ ifeq ($(NSFB_XCB_ICCCM_SIZE_HINTS),yes)
+ CFLAGS := $(CFLAGS) -DNSFB_NEED_HINTS_ALLOC
+ endif
+
+ # xcb-icccm 0.3.8 introduced an additional "icccm_" in function names
+ $(eval $(call pkg_config_package_min_version,NSFB_XCB_ICCCM_API_PREFIX,xcb-icccm,0.3.8))
+ ifeq ($(NSFB_XCB_ICCCM_API_PREFIX),yes)
+ CFLAGS := $(CFLAGS) -DNSFB_NEED_ICCCM_API_PREFIX
+ endif
- ifeq ($(NSFB_XCB_NEW_API),yes)
- CFLAGS := $(CFLAGS) -DNEED_HINTS_ALLOC
+ # xcbproto 1.6 incorporated atoms previously found in xcb_atom
+ # However, libxcb <1.3 did not report xcbproto versions. Assume xcbproto 1.5 in this case.
+ $(eval $(call pkg_config_package_min_version,NSFB_HAVE_MODERN_XCB,xcb,1.3))
+ ifeq ($(NSFB_HAVE_MODERN_XCB),yes)
+ $(eval $(call pkg_config_get_variable,NSFB_XCBPROTO_VERSION,xcb,xcbproto_version))
+ NSFB_XCBPROTO_MAJOR_VERSION := $(word 1,$(subst ., ,$(NSFB_XCBPROTO_VERSION)))
+ NSFB_XCBPROTO_MINOR_VERSION := $(word 2,$(subst ., ,$(NSFB_XCBPROTO_VERSION)))
+ CFLAGS := $(CFLAGS) -DNSFB_XCBPROTO_MAJOR_VERSION=$(NSFB_XCBPROTO_MAJOR_VERSION)
+ CFLAGS := $(CFLAGS) -DNSFB_XCBPROTO_MINOR_VERSION=$(NSFB_XCBPROTO_MINOR_VERSION)
+ else
+ CFLAGS := $(CFLAGS) -DNSFB_XCBPROTO_MAJOR_VERSION=1
+ CFLAGS := $(CFLAGS) -DNSFB_XCBPROTO_MINOR_VERSION=5
endif
$(eval $(call pkg_config_package_add_flags,$(NSFB_XCB_PKG_NAMES),CFLAGS))
diff --git a/src/surface/x.c b/src/surface/x.c
index ccefacf..b9c3429 100644
--- a/src/surface/x.c
+++ b/src/surface/x.c
@@ -33,7 +33,7 @@
#include "plot.h"
#include "cursor.h"
-#if defined(NEED_HINTS_ALLOC)
+#if defined(NSFB_NEED_HINTS_ALLOC)
static xcb_size_hints_t *
xcb_alloc_size_hints(void)
{
@@ -47,6 +47,17 @@ xcb_free_size_hints(xcb_size_hints_t *hints)
}
#endif
+#if defined(NSFB_NEED_ICCCM_API_PREFIX)
+#define xcb_size_hints_set_max_size xcb_icccm_size_hints_set_max_size
+#define xcb_size_hints_set_min_size xcb_icccm_size_hints_set_min_size
+#define xcb_set_wm_size_hints xcb_icccm_set_wm_size_hints
+#endif
+
+#if (NSFB_XCBPROTO_MAJOR_VERSION > 1) || \
+ (NSFB_XCBPROTO_MAJOR_VERSION == 1 && NSFB_XCBPROTO_MINOR_VERSION >= 6)
+#define WM_NORMAL_HINTS XCB_ATOM_WM_NORMAL_HINTS
+#endif
+
#define X_BUTTON_LEFT 1
#define X_BUTTON_MIDDLE 2
#define X_BUTTON_RIGHT 3