summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/xcb/README
blob: a97d8838673c68599d3eeb70a4bcb1cd14df49d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
*****************************************************************
From 62f053c19b917a369c4aad5b71ab150911b589aa:

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)

*****************************************************************

As of time of writing the minimal required libxcb version is 1.11, hence
we could restore the Pointer Barriers API, but we don't use it, so it is
not worth the hustle. When we will bump the minimal required version of libxcb
to 1.13, then we can drop the bundled xcb-xinput altogether.

The xcb-xinput files where modified to use system includes, see:

src/3rdparty/xcb/include/xcb/fixup-xinput-h.patch
src/3rdparty/xcb/libxcb/fixup-xinput-c.patch

*****************************************************************

Additionally, a forwards compatibility bug in libxcb xinput has been addressed
by the following patch:

src/3rdparty/xcb/libxcb/xinput-device-class-sizeof.patch

The crux of the issue is that libxcb thinks that it knows about all device
class types sent by the X server XInput extension. With the addition of
touchpad gestures in XInput 2.4 and X server 21.1 this is no longer the case
and libxcb fails horribly by thinking that the protocol was malformed.

The X server currently has a workaround, but it would not address the following
situation:

 - there are multiple modules within the same X client (e.g. part of the application
   uses Qt, another part talks to X server via another library)
 - both of the modules talk to XI
 - at least one module requests for XI 2.4 protocol support.

The request for XI 2.4 disables the workaround on the X server and Qt side would
crash horribly.

For more details, see https://gitlab.freedesktop.org/xorg/lib/libxcb/-/merge_requests/20