With libxcb 1.11 as minimal required version we can:
(a) (Maybe) Enable threaded GL for MESA, see QTBUG-67277.
(b) Avoid performance issues described in QTBUG-46017. Bundled xcb libs don't
contain the more modern SHM fd passing APIs. The official binaries use
"-qt-xcb", therefore we were shipping with the performance fix #ifdef-ed out.
(c) Make xcb-xkb a mandatory dependency avoiding issues described in QTBUG-30911.
Issues that appear when Qt was configure with "-no-xkb -xcb-xlib", but
X server has the XKB extension.
(d) Drop all, but xcb-xinput sources from src/3rdparty/xcb/, for which
we need "xcb-xinput >= 1.12". This way we can reduce maintenance
work. The xcb libraries were origianlly bundled because of lack of availability
on supported distributions. This is not the case anymore:
CI for Qt 5.13 has:
Ubuntu 18.04 - libxcb 1.13
RHEL 7.4 - libxcb 1.13
openSUSE 15.0 - libxcb 1.13
CI for Qt 5.12 has:
Ubuntu 16.04 - libxcb 1.11
RHEL 7.4 - libxcb 1.13
openSUSE 42.3 - libxcb 1.11
RHEL 6.x - not relevant because it was dropped from supported platforms.
Why 1.11 (released on Aug, 2014), but not 1.13 (released on March 2018)?
Based on what we have in CI for 5.13 and 5.14 we could update to 1.13,
but it means that Qt would require a very recent version of 3rd party
dependency.
[ChangeLog][Configure][X11] The minimal required version of libxcb now is 1.11.
[ChangeLog][Third-Party Code][X11] Removed all bundled XCB libs, with
the exception of xcb-xinput, which is not available on systems with
libxcb 1.11.
[ChangeLog][Configure][X11] Removed -qt-xcb, -system-xcb, -xkb, -xcb-xinput switches.
[ChangeLog][Platform Specific Changes][X11] XKB and XInput2 now are mandatory
dependencies for XCB plugin. XCB-XKB is a part of libxcb 1.11 releases.
XCB-XInput is not part of libxcb 1.11 releases, but Qt builders can use
-bundled-xcb-xinput switch.
Fixes: QTBUG-73862
Fixes: QTBUG-73888
Task-number: QTBUG-67277
Task-number: QTBUG-30939
Change-Id: I4c2bd2a0e667220d32fd1fbfa1419c844f17fcce
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
xcb-render is a C interface for X11 extension. xcb-render-util is a
utility library that complements xcb-render by providing convenience
functions and interfaces which make the raw X protocol more usable.
Bumped xcb-render-util version to avoid having include hacks. We were
bundling 8 years old release 0.3.8 (Apr, 2011). 0.3.9 is the latest
release and it was relesed 4,5 years ago (Jun, 2014). All CI machines
have 0.3.9. The only thing that have changed in xcb-render-util sources
since 2011 is that we don't need to have various hacks to include
xcb_renderutil.h in C++ files. Upgrading bundled XCB libs was also
requested in QTBUG-71109.
Task-number: QTBUG-71109
Change-Id: Ib261f7584ad81be95660123b007e2200a3042f4c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Mention that the current minimal supported version of
libxcb is 1.9.1, amend 1f5d791708.
Remove the specific package requirements for the xcb plugin:
these lists are unmaintained and besides there are build
instructions in wiki: https://wiki.qt.io/Building_Qt_5_from_Git
Change-Id: I4d5b0583a1ba8a355ee1649022845f6c8d520e7c
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
The added xcb-xinput code was produced by build of libxcb 1.13
with xcb-proto 1.13.
The following parts were removed from it:
- Pointer Barriers API (requires xcb-xfixes 1.9 with xcb-proto 1.9)
- SendExtensionEvent API (requires definition of xcb_raw_generic_event_t
from libxcb 1.13)
[ChangeLog][Third-Party Code] Sources of xcb-xinput 1.13 were bundled and
are available via -qt-xcb.
Change-Id: I43d2f43bee0ba874d099c9fb858e74b0e3edc970
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
...and update bundled xcb sources to libxcb 1.9.1 with xcb-proto 1.8.
These are the minimal versions of libxcb and xcb-proto available
on officially supported platforms (they are present on RHEL 6.6).
Remove support_libxcb_versions_where_xcb_sumof_not_available.patch
and revert it for xkb.c, because libxcb 1.9 implements xcb_sumof().
This change makes it easier to bundle xcb libs from newer versions
of libxcb (e.g. xcb-xinput).
[ChangeLog][Third-Party Code][X11] The minimal required version of
libxcb is now 1.9. Bundled xcb sources were updated to libxcb 1.9.1
built with xcb-proto 1.8.
Change-Id: Iebcd05656c4a5ed5dd95e898d497acef857423f0
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
The format is documented in
http://wiki.qt.io/Qt_attribution.json
Also add a LICENSE file in case there is none yet
(usually copied from the source headers).
Task-number: QTBUG-55139
Change-Id: Ib54c73d0bb9946cfd8579e86c6858035184ca516
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
To utilize the new xkb_x11_* API from libxkbcommon 0.4.0, we need to update
the bundled libxcb-xkb version to 1.10, which is the minimal required version.
Change-Id: I0b72a2684bd11cbe5ae65d6dab7292be3a76464c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
The message:
../../../3rdparty/xcb/include/xcb/xkb.h:118:5: error: this decimal
constant is unsigned only in ISO C90 [-Werror]
From the C89 standard:
"The type of an integer constant is the first of the corresponding
list in which its value can be represented. Unsuffixed decimal: int,
long int, unsigned long int;"
In the later standards "unsigned long int" is removed from the "Unsuffixed decimal"
list.
If integer constant is suffixed by the letter u or U, then the list is:
unsigned int, unsigned long int, ..
"unsigned long int" is sufficient on 32 bit systems to store the values of
XCB_XKB_CONTROL_PER_KEY_REPEAT and XCB_XKB_CONTROL_CONTROLS_ENABLED
Task-number: QTBUG-34142
Change-Id: Ic23781fcd00d4901ec9bb5a85068f4315c14bfb8
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
1) -qt-xcb
a) Use xkb from the 3rd party libs. As it is done for the other xcb
dependencies when qt configure with -qt-xcb.
2) -system-xcb (default)
a) If xkb found then use xkb from the system. (Currenly xkb is not
enabled by default when configuring libxcb library).
b) If xkb can't be found on the system then keyboard state will be
updated from X11 core events.
Change-Id: I7c3dbce6daa2cec52067cd5af80f19040233a0db
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Some of the xcb- libraries we depend upon are not (yet) common across
distributions. This is problematic for binaries that should be working
on different distributions. The patch mitigates this by:
Adding the files from
libxcb-proto (version 0.1.6), compiled with libxcb-1.5
xcb-util (version 0.3.9)
xcb-util-image (version 0.3.9)
xcb-util-keysyms (version 0.3.9)
xcb-util-renderutil (version 0.3.8)
xcb-util-wm (version 0.3.9)
from xcb.freedesktop.org/dist to src/3rdparty/xcb.
Adding a configure option '-qt-xcb' to use the sources instead of
linking to the respective runtime libraries.
Task-number: QTBUG-27803
Change-Id: I6ea87daa382871b2b9072a601511523fa0b9f44b
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>