From 0ed5a7f13938ea45a78dbd9469d47aebe23ab02d Mon Sep 17 00:00:00 2001 From: matthieu Date: Sat, 16 May 2020 08:49:00 +0000 Subject: [PATCH] Update to libxcb 1.14 and xcb-proto 1.14. ok tb@ --- dist/libxcb/ChangeLog | 138 ++++++++++++++++++++ dist/libxcb/Makefile.am | 1 + dist/libxcb/NEWS | 7 + dist/libxcb/{README => README.md} | 29 ++-- dist/libxcb/configure.ac | 14 +- dist/libxcb/m4/libtool.m4 | 68 +++++----- dist/libxcb/src/c_client.py | 2 +- dist/libxcb/src/xcb.h | 29 ++++ dist/libxcb/src/xcb_auth.c | 1 + dist/libxcb/src/xcb_conn.c | 28 ++++ dist/libxcb/src/xcb_in.c | 3 +- dist/libxcb/src/xcbint.h | 2 + dist/libxcb/tests/check_all.c | 9 ++ dist/libxcb/tests/check_suites.h | 4 + lib/libxcb/libxcb-screensaver/shlib_version | 4 +- lib/libxcb/libxcb/shlib_version | 2 +- lib/libxcb/src/Makefile | 4 +- lib/libxcb/src/screensaver.c | 6 +- lib/libxcb/src/screensaver.h | 7 +- proto/xcb-proto/Makefile.am | 2 +- proto/xcb-proto/NEWS | 6 + proto/xcb-proto/{README => README.md} | 26 ++-- proto/xcb-proto/configure.ac | 4 +- proto/xcb-proto/py-compile | 8 +- proto/xcb-proto/src/screensaver.xml | 3 +- proto/xcb-proto/xcb-proto.pc.in | 4 +- proto/xcb-proto/xcbgen/state.py | 6 +- proto/xcb-proto/xcbgen/xtypes.py | 39 +++--- 28 files changed, 347 insertions(+), 109 deletions(-) rename dist/libxcb/{README => README.md} (52%) rename proto/xcb-proto/{README => README.md} (75%) diff --git a/dist/libxcb/ChangeLog b/dist/libxcb/ChangeLog index 2581a818a..b94abb472 100644 --- a/dist/libxcb/ChangeLog +++ b/dist/libxcb/ChangeLog @@ -1,3 +1,141 @@ +commit 4b40b44cb6d088b6ffa2fb5cf3ad8f12da588cef +Author: Matt Turner +Date: Sat Feb 22 12:10:53 2020 -0800 + + Release libxcb 1.14 + + Signed-off-by: Matt Turner + +commit 78c492deaa7ae3aad0b0eeb4b126bb291cc637a7 +Author: Matt Turner +Date: Sat Feb 22 12:19:58 2020 -0800 + + Build xz tarballs instead of bzip2 + + Signed-off-by: Matt Turner + +commit 8f7e4c4e9fc6ee6b5b5498a7d8af79150be0d26a +Author: Matt Turner +Date: Sat Feb 22 11:24:11 2020 -0800 + + configure.ac: Depend on pthread-stubs only on not-Linux + + Signed-off-by: Matt Turner + +commit f9f4b00aad69ff36e81c63089b1b16660eaca900 +Author: Sam Varshavchik +Date: Sat Jan 4 10:43:59 2020 -0500 + + Implement xcb_total_read() and xcb_total_written(). + + Returns raw byte counts that have been read or written to the + xcb_connection_t. + + I found it very useful when developing a high level widget toolkit, to + track down inefficient/sub-optimum code that generates a lot of X + protocol traffic. + + Signed-off-by: Sam Varshavchik + +commit 59e271e15bcecf0c461cd5c6c59081fb86b96c22 +Author: A. Wilcox +Date: Mon Dec 23 21:49:29 2019 -0600 + + tests: Support Check 0.13.0 API + + [mattst88]: Keep compatibility with old API via preprocessor + + Fixes: #43 + +commit 21324989b7e121c008a2c4fdf98547541cbf7b83 +Author: Martin Dørum +Date: Sun May 19 16:05:08 2019 +0200 + + Handle EINTR from recvmsg in _xcb_in_read + + I have a GTK application which occasionally crashes with an "interrupted + system call" g_message from gdk. After a lot of debugging, I've found + that the call to recvmsg in _xcb_in_read occasionally fails with EINTR, + and instead of retrying the system call, xcb would just shut down the + connection. + + This change makes _xcb_in_read treat EINTR the same as it would treat + EAGAIN; it returns 1 and libX11 ends up calling xcb_poll_for_event + again (from what I have understood). + + I have spoken with a few people who think recvmsg failing with EINTR in + this case shouldn't ever happen, and I don't know enough to agree or + disagree with that. In case anyone wants to dig further and try to + figure out why the recvmsg call sometimes fails with EINTR, here's the + backtrace from inside of _xcb_in_read where that happened: + + Thread 1 "beanbar" hit Breakpoint 1, _xcb_in_read (c=c@entry=0x55ecbe4aba80) at xcb_in.c:1059 + 1059 fprintf(stderr, "Hello World am %s:%i, errno is %s\n", __FILE__, __LINE__, strerror(errno)); + (gdb) bt + 0 0x00007fa48fa48639 in _xcb_in_read (c=c@entry=0x55ecbe4aba80) at xcb_in.c:1059 + 1 0x00007fa48fa489d8 in poll_for_next_event (c=0x55ecbe4aba80, queued=queued@entry=0) at xcb_in.c:352 + 2 0x00007fa48fa48a3d in poll_for_next_event (queued=0, c=) at xcb_in.c:722 + 3 0x00007fa48fa48a3d in xcb_poll_for_event (c=) at xcb_in.c:722 + 4 0x00007fa4908d1b7e in poll_for_event (dpy=dpy@entry=0x55ecbe4a9730, queued_only=queued_only@entry=0) at xcb_io.c:245 + 5 0x00007fa4908d1cf0 in poll_for_response (dpy=dpy@entry=0x55ecbe4a9730) at xcb_io.c:303 + 6 0x00007fa4908d1fed in _XEventsQueued (mode=2, dpy=0x55ecbe4a9730) at xcb_io.c:363 + 7 0x00007fa4908d1fed in _XEventsQueued (dpy=dpy@entry=0x55ecbe4a9730, mode=mode@entry=2) at xcb_io.c:344 + 8 0x00007fa4908c3d47 in XPending (dpy=0x55ecbe4a9730) at Pending.c:55 + 9 0x00007fa493cadbc7 in () at /usr/lib/libgdk-3.so.0 + 10 0x00007fa49234d08a in g_main_context_prepare () at /usr/lib/libglib-2.0.so.0 + 11 0x00007fa49234d6e6 in () at /usr/lib/libglib-2.0.so.0 + 12 0x00007fa49234d8ae in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 + 13 0x00007fa4938b920e in g_application_run () at /usr/lib/libgio-2.0.so.0 + 14 0x000055ecbc820af4 in main (argc=1, argv=0x7ffd06238098) at src/main.c:190 + + Signed-off-by: Martin Dørum + +commit 656c08c5429a3cf53e7abd7fc56cd3c3a79c0f64 +Author: Jon Turney +Date: Sun Sep 14 00:05:27 2014 +0100 + + Include time.h before using time() + + Signed-off-by: Jon Turney + +commit be1745c8eb00defcb31d336ccc142de056e92bd8 +Author: Alan Coopersmith +Date: Sun Feb 17 12:06:10 2019 -0800 + + Add README.md to EXTRA_DIST + + Signed-off-by: Alan Coopersmith + +commit 58f37377c851960cbf21fac1caf38ab1e66c7d6c +Author: Eduardo Sánchez Muñoz +Date: Sun Feb 17 13:33:12 2019 +0100 + + Add "ge.*" to src/.gitignore + +commit 7bac366953005233fc3c8736e6f1cd5798e65e28 +Author: Alan Coopersmith +Date: Sat Feb 16 13:41:28 2019 -0800 + + Update README for gitlab migration + + Signed-off-by: Alan Coopersmith + +commit 02ff3eadf48e6affe3b59ef688312b4dab538e8b +Author: Alan Coopersmith +Date: Sat Feb 16 13:20:45 2019 -0800 + + Update configure.ac bug URL for gitlab migration + + Signed-off-by: Alan Coopersmith + +commit 542befe40a3a7c6a5d1dcb7f38fb9eb261b96b24 +Author: Alan Coopersmith +Date: Mon Jan 7 14:42:53 2019 -0800 + + c_client: fix "adress" typo + + Signed-off-by: Alan Coopersmith + commit 8287ebd7b752c33b0cabc4982606fe4831106f7e Author: Uli Schlachter Date: Thu Sep 27 14:04:17 2018 +0200 diff --git a/dist/libxcb/Makefile.am b/dist/libxcb/Makefile.am index 57c3a7b8a..fbf6e048b 100644 --- a/dist/libxcb/Makefile.am +++ b/dist/libxcb/Makefile.am @@ -99,6 +99,7 @@ tools/README \ tools/api_conv.pl \ tools/constants \ autogen.sh \ +README.md \ $(TESTS) MAINTAINERCLEANFILES = ChangeLog INSTALL diff --git a/dist/libxcb/NEWS b/dist/libxcb/NEWS index b2ab096a6..224544b4d 100644 --- a/dist/libxcb/NEWS +++ b/dist/libxcb/NEWS @@ -1,3 +1,10 @@ +Release 1.14 (2020-02-22) +========================= +* Add xcb_total_read() and xcb_total_written() API +* Support check >= 0.13 API (for make check) +* Bug fix to handle EINTR from recvmsg +* Only require pthread-stubs on non-Linux platforms + Release 1.13.1 (2018-09-27) =========================== * Don't flag extra reply in xcb_take_socket diff --git a/dist/libxcb/README b/dist/libxcb/README.md similarity index 52% rename from dist/libxcb/README rename to dist/libxcb/README.md index 167c8aca6..a18c73c64 100644 --- a/dist/libxcb/README +++ b/dist/libxcb/README.md @@ -2,7 +2,7 @@ About libxcb ============ libxcb provides an interface to the X Window System protocol, which -replaces the current Xlib interface. It has several advantages over +replaces the traditional Xlib interface. It has several advantages over Xlib, including: - size: small, simple library, and lower memory footprint - latency hiding: batch several requests and wait for the replies later @@ -10,27 +10,32 @@ Xlib, including: - proven thread support: transparently access XCB from multiple threads - easy extension implementation: interfaces auto-generated from XML-XCB -Xlib can also use XCB as a transport layer, allowing software to make +Xlib also uses XCB as a transport layer, allowing software to make requests and receive responses with both, which eases porting to XCB. However, client programs, libraries, and toolkits will gain the most benefit from a native XCB port. +More information about xcb is available from our website: -Please report any issues you find to the freedesktop.org bug tracker, -at: + https://xcb.freedesktop.org/ - +Please report any issues you find to the freedesktop.org bug tracker at: + + https://gitlab.freedesktop.org/xorg/lib/libxcb/issues Discussion about XCB occurs on the XCB mailing list: - - + https://lists.freedesktop.org/mailman/listinfo/xcb -You can obtain the latest development versions of XCB using GIT. -For anonymous checkouts, use: +You can obtain the latest development versions of XCB using GIT from +the libxcb code repository at: - git clone git://anongit.freedesktop.org/git/xcb/libxcb + https://gitlab.freedesktop.org/xorg/lib/libxcb -For developers, use: + For anonymous checkouts, use: - git clone git+ssh://git.freedesktop.org/git/xcb/libxcb + git clone https://gitlab.freedesktop.org/xorg/lib/libxcb.git + + For developers, use: + + git clone git@gitlab.freedesktop.org:xorg/lib/libxcb.git diff --git a/dist/libxcb/configure.ac b/dist/libxcb/configure.ac index 8a05bf1aa..adb48e789 100644 --- a/dist/libxcb/configure.ac +++ b/dist/libxcb/configure.ac @@ -2,8 +2,8 @@ dnl Process this file with autoconf to produce a configure script. # Initialize Autoconf AC_PREREQ([2.60]) -AC_INIT([libxcb],[1.13.1], - [https://bugs.freedesktop.org/enter_bug.cgi?product=xcb], +AC_INIT([libxcb],[1.14], + [https://gitlab.freedesktop.org/xorg/lib/libxcb/issues], [libxcb]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) @@ -11,7 +11,7 @@ AC_CONFIG_SRCDIR([xcb.pc.in]) AC_CONFIG_HEADERS([src/config.h]) # Initialize Automake -AM_INIT_AUTOMAKE([foreign dist-bzip2]) +AM_INIT_AUTOMAKE([foreign dist-xz]) AM_PATH_PYTHON([2.6]) # Set common system defines for POSIX extensions, such as _GNU_SOURCE @@ -50,8 +50,12 @@ fi AC_SUBST(HTML_CHECK_RESULT) # Checks for pkg-config packages -PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.13) -NEEDED="pthread-stubs xau >= 0.99.2" +PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.14) +NEEDED="xau >= 0.99.2" +case $host_os in +linux*) ;; + *) NEEDED="$NEEDED pthread-stubs" ;; +esac PKG_CHECK_MODULES(NEEDED, $NEEDED) have_xdmcp="no" diff --git a/dist/libxcb/m4/libtool.m4 b/dist/libxcb/m4/libtool.m4 index e67ed6997..ae7c90613 100644 --- a/dist/libxcb/m4/libtool.m4 +++ b/dist/libxcb/m4/libtool.m4 @@ -728,6 +728,7 @@ _LT_CONFIG_SAVE_COMMANDS([ cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. @@ -1416,10 +1417,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*linux*) + powerpcle-*linux*|powerpc64le-*linux*) LD="${LD-ld} -m elf64lppc" ;; - powerpc-*linux*) + powerpc-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -1707,6 +1708,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. @@ -2635,11 +2641,11 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + library_names_spec='$libname$release$versuffix$shared_ext $libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + shrext_cmds='`test .$module = .yes && echo .bundle || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' @@ -2665,7 +2671,14 @@ freebsd* | dragonfly*) *) objformat=elf ;; esac fi - version_type=freebsd-$objformat + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' @@ -2677,6 +2690,12 @@ freebsd* | dragonfly*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in @@ -2886,18 +2905,6 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - netbsd*) version_type=sunos need_lib_prefix=no @@ -3557,7 +3564,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; -netbsd* | netbsdelf*-gnu) +netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -4435,7 +4442,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - netbsd* | netbsdelf*-gnu) + netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4947,9 +4954,6 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -5012,9 +5016,6 @@ dnl Note also adjust exclude_expsyms for C++ above. openbsd* | bitrig*) with_gnu_ld=no ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -5269,7 +5270,7 @@ _LT_EOF fi ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -5790,7 +5791,6 @@ _LT_EOF if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi - _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' @@ -5812,7 +5812,7 @@ _LT_EOF esac ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -6438,7 +6438,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no @@ -6813,7 +6813,7 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6878,7 +6878,7 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -7217,7 +7217,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support @@ -7301,7 +7301,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -7312,7 +7312,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' diff --git a/dist/libxcb/src/c_client.py b/dist/libxcb/src/c_client.py index 2213a317d..39f162ea9 100644 --- a/dist/libxcb/src/c_client.py +++ b/dist/libxcb/src/c_client.py @@ -1933,7 +1933,7 @@ def _c_accessors_list(self, field): else: # use the accessor to get the start of the list, then # compute the length of it by subtracting it from - # the adress of the first byte after the end of the + # the address of the first byte after the end of the # request after_end_of_request = '(((char*)R) + R->length * 4)' start_of_list = '%s(R)' % (field.c_accessor_name) diff --git a/dist/libxcb/src/xcb.h b/dist/libxcb/src/xcb.h index cbc0f2bf2..dd7f532d0 100644 --- a/dist/libxcb/src/xcb.h +++ b/dist/libxcb/src/xcb.h @@ -599,6 +599,35 @@ xcb_connection_t *xcb_connect_to_display_with_auth_info(const char *display, xcb uint32_t xcb_generate_id(xcb_connection_t *c); +/** + * @brief Obtain number of bytes read from the connection. + * @param c The connection + * @return Number of bytes read from the server. + * + * Returns cumulative number of bytes received from the connection. + * + * This retrieves the total number of bytes read from this connection, + * to be used for diagnostic/monitoring/informative purposes. + */ + +uint64_t +xcb_total_read(xcb_connection_t *c); + +/** + * + * @brief Obtain number of bytes written to the connection. + * @param c The connection + * @return Number of bytes written to the server. + * + * Returns cumulative number of bytes sent to the connection. + * + * This retrieves the total number of bytes written to this connection, + * to be used for diagnostic/monitoring/informative purposes. + */ + +uint64_t +xcb_total_written(xcb_connection_t *c); + /** * @} */ diff --git a/dist/libxcb/src/xcb_auth.c b/dist/libxcb/src/xcb_auth.c index 29e2b6f84..26eebbb0c 100644 --- a/dist/libxcb/src/xcb_auth.c +++ b/dist/libxcb/src/xcb_auth.c @@ -34,6 +34,7 @@ #include #include #include +#include #ifdef __INTERIX /* _don't_ ask. interix has INADDR_LOOPBACK in here. */ diff --git a/dist/libxcb/src/xcb_conn.c b/dist/libxcb/src/xcb_conn.c index 7d0963716..8dab6589b 100644 --- a/dist/libxcb/src/xcb_conn.c +++ b/dist/libxcb/src/xcb_conn.c @@ -287,6 +287,7 @@ static int write_vec(xcb_connection_t *c, struct iovec **vector, int *count) return 0; } + c->out.total_written += n; for(; *count; --*count, ++*vector) { int cur = (*vector)->iov_len; @@ -528,3 +529,30 @@ int _xcb_conn_wait(xcb_connection_t *c, pthread_cond_t *cond, struct iovec **vec return ret; } + +uint64_t xcb_total_read(xcb_connection_t *c) +{ + uint64_t n; + + if (xcb_connection_has_error(c)) + return 0; + + pthread_mutex_lock(&c->iolock); + n = c->in.total_read; + pthread_mutex_unlock(&c->iolock); + return n; +} + +uint64_t xcb_total_written(xcb_connection_t *c) +{ + uint64_t n; + + if (xcb_connection_has_error(c)) + return 0; + + pthread_mutex_lock(&c->iolock); + n = c->out.total_written; + pthread_mutex_unlock(&c->iolock); + + return n; +} diff --git a/dist/libxcb/src/xcb_in.c b/dist/libxcb/src/xcb_in.c index 58fe8962e..796b4e946 100644 --- a/dist/libxcb/src/xcb_in.c +++ b/dist/libxcb/src/xcb_in.c @@ -1025,6 +1025,7 @@ int _xcb_in_read(xcb_connection_t *c) } } #endif + c->in.total_read += n; c->in.queue_len += n; } while(read_packet(c)) @@ -1051,7 +1052,7 @@ int _xcb_in_read(xcb_connection_t *c) } #endif #ifndef _WIN32 - if((n > 0) || (n < 0 && errno == EAGAIN)) + if((n > 0) || (n < 0 && (errno == EAGAIN || errno == EINTR))) #else if((n > 0) || (n < 0 && WSAGetLastError() == WSAEWOULDBLOCK)) #endif /* !_WIN32 */ diff --git a/dist/libxcb/src/xcbint.h b/dist/libxcb/src/xcbint.h index acce64657..cef9821a8 100644 --- a/dist/libxcb/src/xcbint.h +++ b/dist/libxcb/src/xcbint.h @@ -103,6 +103,7 @@ typedef struct _xcb_out { uint64_t request; uint64_t request_written; + uint64_t total_written; pthread_mutex_t reqlenlock; enum lazy_reply_tag maximum_request_length_tag; @@ -135,6 +136,7 @@ typedef struct _xcb_in { uint64_t request_expected; uint64_t request_read; uint64_t request_completed; + uint64_t total_read; struct reply_list *current_reply; struct reply_list **current_reply_tail; diff --git a/dist/libxcb/tests/check_all.c b/dist/libxcb/tests/check_all.c index 4393422e3..f4c909cda 100644 --- a/dist/libxcb/tests/check_all.c +++ b/dist/libxcb/tests/check_all.c @@ -1,10 +1,19 @@ #include #include "check_suites.h" +#if CHECK_MAJOR_VERSION == 0 && CHECK_MINOR_VERSION < 13 void suite_add_test(Suite *s, TFun tf, const char *name) +#else +void suite_add_test(Suite *s, const TTest *tt, const char *name) +#endif { TCase *tc = tcase_create(name); + +#if CHECK_MAJOR_VERSION == 0 && CHECK_MINOR_VERSION < 13 tcase_add_test(tc, tf); +#else + tcase_add_test(tc, tt); +#endif suite_add_tcase(s, tc); } diff --git a/dist/libxcb/tests/check_suites.h b/dist/libxcb/tests/check_suites.h index 499f1afaf..e66208427 100644 --- a/dist/libxcb/tests/check_suites.h +++ b/dist/libxcb/tests/check_suites.h @@ -1,4 +1,8 @@ #include +#if CHECK_MAJOR_VERSION == 0 && CHECK_MINOR_VERSION < 13 void suite_add_test(Suite *s, TFun tf, const char *name); +#else +void suite_add_test(Suite *s, const TTest *tt, const char *name); +#endif Suite *public_suite(void); diff --git a/lib/libxcb/libxcb-screensaver/shlib_version b/lib/libxcb/libxcb-screensaver/shlib_version index 893819d18..b52599a16 100644 --- a/lib/libxcb/libxcb-screensaver/shlib_version +++ b/lib/libxcb/libxcb-screensaver/shlib_version @@ -1,2 +1,2 @@ -major=1 -minor=1 +major=2 +minor=0 diff --git a/lib/libxcb/libxcb/shlib_version b/lib/libxcb/libxcb/shlib_version index d9961ea9f..890c57389 100644 --- a/lib/libxcb/libxcb/shlib_version +++ b/lib/libxcb/libxcb/shlib_version @@ -1,2 +1,2 @@ major=4 -minor=0 +minor=1 diff --git a/lib/libxcb/src/Makefile b/lib/libxcb/src/Makefile index 6064ffaa2..33b4fcca0 100644 --- a/lib/libxcb/src/Makefile +++ b/lib/libxcb/src/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.11 2018/10/04 20:17:48 matthieu Exp $ +# $OpenBSD: Makefile,v 1.12 2020/05/16 08:49:00 matthieu Exp $ # This Makefile is used to generate the sources files with xcbgen # The x11/py-xcbgen package needs to be installed @@ -6,7 +6,7 @@ DATADIR= ${X11BASE}/share PYTHON= python${PYTHON_VERSION} -MANOPTIONS= -c 'libxcb 1.13.1' -l 'X Version 11' -s 3 +MANOPTIONS= -c 'libxcb 1.14' -l 'X Version 11' -s 3 SRCS= \ bigreq.c \ diff --git a/lib/libxcb/src/screensaver.c b/lib/libxcb/src/screensaver.c index 67d761705..9d8457616 100644 --- a/lib/libxcb/src/screensaver.c +++ b/lib/libxcb/src/screensaver.c @@ -797,7 +797,7 @@ xcb_screensaver_unset_attributes (xcb_connection_t *c, xcb_void_cookie_t xcb_screensaver_suspend_checked (xcb_connection_t *c, - uint8_t suspend) + uint32_t suspend) { static const xcb_protocol_request_t xcb_req = { .count = 2, @@ -811,7 +811,6 @@ xcb_screensaver_suspend_checked (xcb_connection_t *c, xcb_screensaver_suspend_request_t xcb_out; xcb_out.suspend = suspend; - memset(xcb_out.pad0, 0, 3); xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); @@ -824,7 +823,7 @@ xcb_screensaver_suspend_checked (xcb_connection_t *c, xcb_void_cookie_t xcb_screensaver_suspend (xcb_connection_t *c, - uint8_t suspend) + uint32_t suspend) { static const xcb_protocol_request_t xcb_req = { .count = 2, @@ -838,7 +837,6 @@ xcb_screensaver_suspend (xcb_connection_t *c, xcb_screensaver_suspend_request_t xcb_out; xcb_out.suspend = suspend; - memset(xcb_out.pad0, 0, 3); xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); diff --git a/lib/libxcb/src/screensaver.h b/lib/libxcb/src/screensaver.h index 1982f21e5..f6982ea00 100644 --- a/lib/libxcb/src/screensaver.h +++ b/lib/libxcb/src/screensaver.h @@ -193,8 +193,7 @@ typedef struct xcb_screensaver_suspend_request_t { uint8_t major_opcode; uint8_t minor_opcode; uint16_t length; - uint8_t suspend; - uint8_t pad0[3]; + uint32_t suspend; } xcb_screensaver_suspend_request_t; /** Opcode for xcb_screensaver_notify. */ @@ -492,7 +491,7 @@ xcb_screensaver_unset_attributes (xcb_connection_t *c, */ xcb_void_cookie_t xcb_screensaver_suspend_checked (xcb_connection_t *c, - uint8_t suspend); + uint32_t suspend); /** * @@ -504,7 +503,7 @@ xcb_screensaver_suspend_checked (xcb_connection_t *c, */ xcb_void_cookie_t xcb_screensaver_suspend (xcb_connection_t *c, - uint8_t suspend); + uint32_t suspend); #ifdef __cplusplus diff --git a/proto/xcb-proto/Makefile.am b/proto/xcb-proto/Makefile.am index 6bc14ada0..0312e7ad8 100644 --- a/proto/xcb-proto/Makefile.am +++ b/proto/xcb-proto/Makefile.am @@ -3,4 +3,4 @@ SUBDIRS = src xcbgen pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = xcb-proto.pc -EXTRA_DIST=doc xcb-proto.pc.in autogen.sh +EXTRA_DIST=doc xcb-proto.pc.in autogen.sh README.md diff --git a/proto/xcb-proto/NEWS b/proto/xcb-proto/NEWS index efae961ab..9bab62be7 100644 --- a/proto/xcb-proto/NEWS +++ b/proto/xcb-proto/NEWS @@ -1,3 +1,9 @@ +Release 1.14 (2020-02-22) +========================= +* Fix size computation of imported lists +* Allow access to the original type in the XML +* Add sysroot prefix to pkgconfig file (Fixes #9) + Release 1.13 (2018-02-28) ========================= * dri3: Add multi-plane/modifier protocol for v1.2 diff --git a/proto/xcb-proto/README b/proto/xcb-proto/README.md similarity index 75% rename from proto/xcb-proto/README rename to proto/xcb-proto/README.md index 22d7debca..5ee075cf1 100644 --- a/proto/xcb-proto/README +++ b/proto/xcb-proto/README.md @@ -24,24 +24,26 @@ install location to your Python path by creating a file with a `.pth' extension in a directory that _is_ on the Python path, and put the path to the install location in that file. For example, on my system there is a file named 'local.pth' in /usr/lib/python2.5/site-packages, -which contains '/usr/local/lib/python2.5/site-packages'. Note that -this is only necessary on machines where XCB is being built. +which contains '/usr/local/lib/python2.5/site-packages'. Note that +this is only necessary on machines where XCB is being built. -Please report any issues you find to the freedesktop.org bug tracker, -at: +Please report any issues you find to the freedesktop.org bug tracker at: - + https://gitlab.freedesktop.org/xorg/proto/xcbproto/issues Discussion about XCB occurs on the XCB mailing list: - - + https://lists.freedesktop.org/mailman/listinfo/xcb -You can obtain the latest development versions of XCB using GIT. -For anonymous checkouts, use: +You can obtain the latest development versions of xcb-proto using GIT from +the xcbproto code repository at: - git clone git://anongit.freedesktop.org/git/xcb/proto + https://gitlab.freedesktop.org/xorg/proto/xcbproto -For developers, use: + For anonymous checkouts, use: - git clone git+ssh://git.freedesktop.org/git/xcb/proto + git clone https://gitlab.freedesktop.org/xorg/proto/xcbproto.git + + For developers, use: + + git clone git@gitlab.freedesktop.org:xorg/proto/xcbproto.git diff --git a/proto/xcb-proto/configure.ac b/proto/xcb-proto/configure.ac index 88b3439c9..14a7c2d08 100644 --- a/proto/xcb-proto/configure.ac +++ b/proto/xcb-proto/configure.ac @@ -3,10 +3,10 @@ AC_PREREQ(2.57) AC_INIT([XCB Proto], - 1.13, + 1.14, [xcb@lists.freedesktop.org]) AC_CONFIG_SRCDIR([xcb-proto.pc.in]) -AM_INIT_AUTOMAKE([foreign dist-bzip2]) +AM_INIT_AUTOMAKE([foreign dist-xz]) AC_PATH_PROG(XMLLINT, xmllint, no) AM_CONDITIONAL(HAVE_XMLLINT, test "x$XMLLINT" != "xno") diff --git a/proto/xcb-proto/py-compile b/proto/xcb-proto/py-compile index 3693d96b0..9f8baf7ab 100644 --- a/proto/xcb-proto/py-compile +++ b/proto/xcb-proto/py-compile @@ -1,9 +1,9 @@ #!/bin/sh # py-compile - Compile a Python program -scriptversion=2016-01-11.22; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 2000-2017 Free Software Foundation, Inc. +# Copyright (C) 2000-2018 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ scriptversion=2016-01-11.22; # UTC # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -162,7 +162,7 @@ sys.stdout.write('\n')" 2>/dev/null || : # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" diff --git a/proto/xcb-proto/src/screensaver.xml b/proto/xcb-proto/src/screensaver.xml index 8d5abb43d..c546f9446 100644 --- a/proto/xcb-proto/src/screensaver.xml +++ b/proto/xcb-proto/src/screensaver.xml @@ -168,8 +168,7 @@ Draft Standard Version 1.1 - - + diff --git a/proto/xcb-proto/xcb-proto.pc.in b/proto/xcb-proto/xcb-proto.pc.in index d312e6e5d..a35f0bd03 100644 --- a/proto/xcb-proto/xcb-proto.pc.in +++ b/proto/xcb-proto/xcb-proto.pc.in @@ -3,8 +3,8 @@ exec_prefix=@exec_prefix@ datarootdir=@datarootdir@ datadir=@datadir@ libdir=@libdir@ -xcbincludedir=@xcbincludedir@ -pythondir=@pythondir@ +xcbincludedir=${pc_sysrootdir}@xcbincludedir@ +pythondir=${pc_sysrootdir}@pythondir@ Name: XCB Proto Description: X protocol descriptions for XCB diff --git a/proto/xcb-proto/xcbgen/state.py b/proto/xcb-proto/xcbgen/state.py index a8346bb20..0dbecdc7b 100644 --- a/proto/xcb-proto/xcbgen/state.py +++ b/proto/xcb-proto/xcbgen/state.py @@ -100,12 +100,12 @@ class Module(object): self.add_type('INT16', '', ('int16_t',), tint16) self.add_type('INT32', '', ('int32_t',), tint32) self.add_type('INT64', '', ('int64_t',), tint64) - self.add_type('BYTE', '', ('uint8_t',), tcard8) - self.add_type('BOOL', '', ('uint8_t',), tcard8) + self.add_type('BYTE', '', ('uint8_t',), tbyte) + self.add_type('BOOL', '', ('uint8_t',), tbool) self.add_type('char', '', ('char',), tchar) self.add_type('float', '', ('float',), tfloat) self.add_type('double', '', ('double',), tdouble) - self.add_type('void', '', ('void',), tcard8) + self.add_type('void', '', ('void',), tvoid) # This goes out and parses the rest of the XML def register(self): diff --git a/proto/xcb-proto/xcbgen/xtypes.py b/proto/xcb-proto/xcbgen/xtypes.py index 1e270ae61..3afc812a4 100644 --- a/proto/xcb-proto/xcbgen/xtypes.py +++ b/proto/xcb-proto/xcbgen/xtypes.py @@ -192,12 +192,12 @@ class SimpleType(PrimitiveType): Any type which is typedef'ed to cardinal will be one of these. Public fields added: - none + xml_type is the original string describing the type in the XML ''' - def __init__(self, name, size): + def __init__(self, name, size, xml_type=None): PrimitiveType.__init__(self, name, size) self.is_simple = True - + self.xml_type = xml_type def resolve(self, module): self.resolved = True @@ -206,24 +206,27 @@ class SimpleType(PrimitiveType): # Cardinal datatype globals. See module __init__ method. -tcard8 = SimpleType(('uint8_t',), 1) -tcard16 = SimpleType(('uint16_t',), 2) -tcard32 = SimpleType(('uint32_t',), 4) -tcard64 = SimpleType(('uint64_t',), 8) -tint8 = SimpleType(('int8_t',), 1) -tint16 = SimpleType(('int16_t',), 2) -tint32 = SimpleType(('int32_t',), 4) -tint64 = SimpleType(('int64_t',), 8) -tchar = SimpleType(('char',), 1) -tfloat = SimpleType(('float',), 4) -tdouble = SimpleType(('double',), 8) +tcard8 = SimpleType(('uint8_t',), 1, 'CARD8') +tcard16 = SimpleType(('uint16_t',), 2, 'CARD16') +tcard32 = SimpleType(('uint32_t',), 4, 'CARD32') +tcard64 = SimpleType(('uint64_t',), 8, 'CARD64') +tint8 = SimpleType(('int8_t',), 1, 'INT8') +tint16 = SimpleType(('int16_t',), 2, 'INT16') +tint32 = SimpleType(('int32_t',), 4, 'INT32') +tint64 = SimpleType(('int64_t',), 8, 'INT64') +tchar = SimpleType(('char',), 1, 'char') +tfloat = SimpleType(('float',), 4, 'float') +tdouble = SimpleType(('double',), 8, 'double') +tbyte = SimpleType(('uint8_t',), 1, 'BYTE') +tbool = SimpleType(('uint8_t',), 1, 'BOOL') +tvoid = SimpleType(('uint8_t',), 1, 'void') class FileDescriptor(SimpleType): ''' Derived class which represents a file descriptor. ''' def __init__(self): - SimpleType.__init__(self, ('int'), 4) + SimpleType.__init__(self, ('int'), 4, 'fd') self.is_fd = True def fixed_size(self): @@ -240,7 +243,7 @@ class Enum(SimpleType): bits contains a list of (name, bitnum) tuples. items only appear if specified as a bit. bitnum is a number. ''' def __init__(self, name, elt): - SimpleType.__init__(self, name, 4) + SimpleType.__init__(self, name, 4, 'enum') self.values = [] self.bits = [] self.doc = None @@ -333,6 +336,9 @@ class ListType(Type): self.member.resolve(module) self.expr.resolve(module, self.parents) + # resolve() could have changed the size (ComplexType starts with size 0) + self.size = self.member.size if self.member.fixed_size() else None + self.required_start_align = self.member.required_start_align # Find my length field again. We need the actual Field object in the expr. @@ -506,7 +512,6 @@ class ComplexType(Type): self.nmemb = 1 self.size = 0 self.lenfield_parent = [self] - self.fds = [] # get required_start_alignment required_start_align_element = elt.find("required_start_align")