configure: properly atomize render vs. renderutil

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>
This commit is contained in:
Gatis Paeglis 2018-12-27 01:10:29 +01:00
parent ceddc14af1
commit 6899117a59
7 changed files with 46 additions and 45 deletions

View File

@ -8,7 +8,7 @@ Contains the header and sources files from selected xcb libraries:
Pointer Barriers API and SendExtensionEvent API)
libxcb-util-image-0.3.9
libxcb-util-keysyms-0.3.9
libxcb-util-renderutil-0.3.8
libxcb-util-renderutil-0.3.9
libxcb-util-wm-0.3.9
The 'include' directory was obtained by compiling and installing all of the modules.

View File

@ -27,6 +27,10 @@
#define XCB_RENDERUTIL
#include <xcb/render.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum xcb_pict_format_t {
XCB_PICT_FORMAT_ID = (1 << 0),
XCB_PICT_FORMAT_TYPE = (1 << 1),
@ -58,7 +62,7 @@ xcb_render_util_find_visual_format (const xcb_render_query_pict_formats_reply_t
xcb_render_pictforminfo_t *
xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *formats,
unsigned long mask,
const xcb_render_pictforminfo_t *template,
const xcb_render_pictforminfo_t *ptemplate,
int count);
xcb_render_pictforminfo_t *
@ -139,4 +143,8 @@ void
xcb_render_util_composite_text_free (
xcb_render_util_composite_text_stream_t *stream );
#ifdef __cplusplus
}
#endif
#endif /* XCB_RENDERUTIL */

View File

@ -19,6 +19,10 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "xcb_renderutil.h"
xcb_render_pictvisual_t *
@ -41,7 +45,7 @@ xcb_render_util_find_visual_format (const xcb_render_query_pict_formats_reply_t
xcb_render_pictforminfo_t *
xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *formats,
unsigned long mask,
const xcb_render_pictforminfo_t *template,
const xcb_render_pictforminfo_t *ptemplate,
int count)
{
xcb_render_pictforminfo_iterator_t i;
@ -50,40 +54,40 @@ xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *format
for (i = xcb_render_query_pict_formats_formats_iterator(formats); i.rem; xcb_render_pictforminfo_next(&i))
{
if (mask & XCB_PICT_FORMAT_ID)
if (template->id != i.data->id)
if (ptemplate->id != i.data->id)
continue;
if (mask & XCB_PICT_FORMAT_TYPE)
if (template->type != i.data->type)
if (ptemplate->type != i.data->type)
continue;
if (mask & XCB_PICT_FORMAT_DEPTH)
if (template->depth != i.data->depth)
if (ptemplate->depth != i.data->depth)
continue;
if (mask & XCB_PICT_FORMAT_RED)
if (template->direct.red_shift != i.data->direct.red_shift)
if (ptemplate->direct.red_shift != i.data->direct.red_shift)
continue;
if (mask & XCB_PICT_FORMAT_RED_MASK)
if (template->direct.red_mask != i.data->direct.red_mask)
if (ptemplate->direct.red_mask != i.data->direct.red_mask)
continue;
if (mask & XCB_PICT_FORMAT_GREEN)
if (template->direct.green_shift != i.data->direct.green_shift)
if (ptemplate->direct.green_shift != i.data->direct.green_shift)
continue;
if (mask & XCB_PICT_FORMAT_GREEN_MASK)
if (template->direct.green_mask != i.data->direct.green_mask)
if (ptemplate->direct.green_mask != i.data->direct.green_mask)
continue;
if (mask & XCB_PICT_FORMAT_BLUE)
if (template->direct.blue_shift != i.data->direct.blue_shift)
if (ptemplate->direct.blue_shift != i.data->direct.blue_shift)
continue;
if (mask & XCB_PICT_FORMAT_BLUE_MASK)
if (template->direct.blue_mask != i.data->direct.blue_mask)
if (ptemplate->direct.blue_mask != i.data->direct.blue_mask)
continue;
if (mask & XCB_PICT_FORMAT_ALPHA)
if (template->direct.alpha_shift != i.data->direct.alpha_shift)
if (ptemplate->direct.alpha_shift != i.data->direct.alpha_shift)
continue;
if (mask & XCB_PICT_FORMAT_ALPHA_MASK)
if (template->direct.alpha_mask != i.data->direct.alpha_mask)
if (ptemplate->direct.alpha_mask != i.data->direct.alpha_mask)
continue;
if (mask & XCB_PICT_FORMAT_COLORMAP)
if (template->colormap != i.data->colormap)
if (ptemplate->colormap != i.data->colormap)
continue;
if (count-- == 0)
return i.data;

View File

@ -615,6 +615,20 @@
],
"use": "xcb"
},
"xcb_renderutil": {
"label": "XCB Renderutil >= 0.3.9",
"test": {
"main": [
"xcb_render_util_find_standard_format(nullptr, XCB_PICT_STANDARD_ARGB_32);"
]
},
"headers": "xcb/xcb_renderutil.h",
"sources": [
{ "type": "pkgConfig", "args": "xcb-renderutil >= 0.3.9" },
"-lxcb-render-util"
],
"use": "xcb xcb_render"
},
"xcb_randr": {
"label": "XCB RandR",
"headers": "xcb/randr.h",
@ -704,32 +718,20 @@
"xcb_render": {
"label": "XCB XRender",
"test": {
"tail": [
"// 'template' is used as a function argument name in xcb_renderutil.h",
"#define template template_param",
"// extern \"C\" is missing, too",
"extern \"C\" {",
"#include <xcb/xcb_renderutil.h>",
"}",
"#undef template"
],
"main": [
"int primaryScreen = 0;",
"xcb_generic_error_t *error = 0;",
"xcb_connection_t *connection = 0;",
"xcb_render_query_pict_formats_cookie_t formatsCookie =",
" xcb_render_query_pict_formats(connection);",
"xcb_render_query_pict_formats_reply_t *formatsReply =",
" xcb_render_query_pict_formats_reply(",
" connection, formatsCookie, &error);",
"xcb_render_util_find_standard_format(",
" formatsReply, XCB_PICT_STANDARD_ARGB_32);"
" connection, formatsCookie, &error);"
]
},
"headers": "xcb/render.h",
"sources": [
{ "type": "pkgConfig", "args": "xcb-renderutil xcb-render" },
"-lxcb-render-util -lxcb-render"
{ "type": "pkgConfig", "args": "xcb-render" },
"-lxcb-render"
],
"use": "xcb"
},
@ -737,7 +739,6 @@
"label": "XCB GLX",
"test": {
"main": [
"int primaryScreen = 0;",
"xcb_connection_t *connection = 0;",
"xcb_generic_error_t *error = 0;",
"xcb_glx_query_version_cookie_t xglx_query_cookie = xcb_glx_query_version(",
@ -1555,7 +1556,7 @@
"xcb-render": {
"label": "XCB render",
"emitIf": "features.xcb",
"condition": "!features.system-xcb || libs.xcb_render",
"condition": "!features.system-xcb || (libs.xcb_render && libs.xcb_renderutil)",
"output": [ "privateFeature" ]
},
"xkb": {

View File

@ -47,13 +47,7 @@
#include <xcb/xcb_image.h>
#if QT_CONFIG(xcb_render)
#include <xcb/render.h>
// 'template' is used as a function argument name in xcb_renderutil.h
#define template template_param
// extern "C" is missing too
extern "C" {
#include <xcb/xcb_renderutil.h>
}
#undef template
#endif
#include <sys/ipc.h>

View File

@ -44,13 +44,7 @@
#include <QtGui/private/qdrawhelper_p.h>
#if QT_CONFIG(xcb_render)
#include <xcb/render.h>
// 'template' is used as a function argument name in xcb_renderutil.h
#define template template_param
// extern "C" is missing too
extern "C" {
#include <xcb/xcb_renderutil.h>
}
#undef template
#endif
#include "qxcbconnection.h"

View File

@ -97,7 +97,7 @@ qtConfig(vulkan) {
!qtConfig(system-xcb) {
QMAKE_USE += xcb-static
} else {
qtConfig(xcb-render): QMAKE_USE += xcb_render
qtConfig(xcb-render): QMAKE_USE += xcb_render xcb_renderutil
qtConfig(xcb-xinput): QMAKE_USE += xcb_xinput
QMAKE_USE += xcb_icccm xcb_image xcb_keysyms xcb_randr xcb_shape xcb_shm xcb_sync xcb_xfixes xcb_xinerama
}