diff options
author | Gatis Paeglis <gatis.paeglis@qt.io> | 2019-01-16 15:12:16 +0800 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2019-02-06 22:11:44 +0000 |
commit | c0ebec51e3dd1b52767878fe7fd56ce6e8f95461 (patch) | |
tree | 906f7dbc0c799dbbe55fa579d63e6ce73b5f4dea /src/plugins/platforminputcontexts | |
parent | edc455c69b7a938f7a7ce98b5b0ffd1398f239c6 (diff) |
xcb: respect big-request encoding in max request size
From big-request specification:
"This extension defines a mechanism for extending the length
field beyond 16 bits. If the normal 16-bit length field of the protocol
request is zero, then an additional 32-bit field containing the actual
length (in 4-byte units) is inserted into the request, immediately
following the 16-bit length field."
Meaning that the request requires 4 additional bytes. This patch provides
a convenience API for calculating maximum request data size.
Besides fixing QTBUG-73044, it was also discovered that calculations
for xcb_image_put (in QXcbBackingStoreImage::flushPixmap) were wrong.
The code assumed that xcb_get_maximum_request_length() returns bytes,
but what it actually returns is length which is measured in four-byte
units. This means that we were sending 4x less bytes than allowed by
the protocol. Furthermore, use the actual 'stride' (bytes per line) value
when calculating rows_per_put. The new stride value was introduced
by 760b2929a3b268e2edf14a561329bdb78fbdc26e, but was not updated in
rows_per_put calculations.
Fixes: QTBUG-73044
Done-with: JiDe Zhang <zccrs@live.com>
Done-with: Mikhail Svetkin <mikhail.svetkin@qt.io>
Change-Id: I06beb6082da3e8bc78225a87603914e796fe5878
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: JiDe Zhang <zccrs@live.com>
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/plugins/platforminputcontexts')
0 files changed, 0 insertions, 0 deletions