summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2016-02-01 13:48:44 -0800
committerAdam Jackson <ajax@redhat.com>2016-02-08 16:13:12 -0500
commitdb8cdfda4ded5c94c76212e51c1bf903439ce52d (patch)
treec9b5a60549ee1616621ffc2b37e8f5300533592c
parentc717994102c1e190c0131b57915693b951ed81b7 (diff)
Save the list of active formats in a global for use by tests.
I'd like to move driving of tests out of tests.c and into t_*.c, and part of that will be allowing tests to use the formats list. While I'm at it, save the name of the format in the array so it doesn't need to be recomputed. Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--rendercheck.h8
-rw-r--r--tests.c51
2 files changed, 34 insertions, 25 deletions
diff --git a/rendercheck.h b/rendercheck.h
index 55ffcff..2195cb4 100644
--- a/rendercheck.h
+++ b/rendercheck.h
@@ -80,6 +80,14 @@ struct op_info {
#define TEST_GTK_ARGB_XBGR 0x2000
#define TEST_LIBREOFFICE_XRGB 0x4000
+struct render_format {
+ XRenderPictFormat *format;
+ char *name;
+};
+
+extern struct render_format *formats;
+extern int nformats;
+
extern int pixmap_move_iter;
extern int win_width, win_height;
extern struct op_info ops[];
diff --git a/tests.c b/tests.c
index 62fa34b..456e778 100644
--- a/tests.c
+++ b/tests.c
@@ -27,8 +27,8 @@
#include "rendercheck.h"
-static XRenderPictFormat **format_list;
-static int nformats;
+struct render_format *formats;
+int nformats;
static int argb32index;
/* Note: changing the order of these colors may disrupt tests that depend on
@@ -240,36 +240,35 @@ create_formats_list(Display *dpy)
{
int i;
int nformats_allocated = 5;
- XRenderPictFormat templ;
+ XRenderPictFormat templ, *format;
memset(&templ, 0, sizeof(templ));
templ.type = PictTypeDirect;
- format_list = malloc(sizeof(XRenderPictFormat *) * nformats_allocated);
- if (format_list == NULL)
+ formats = malloc(sizeof(*formats) * nformats_allocated);
+ if (formats == NULL)
errx(1, "malloc error");
nformats = 0;
argb32index = -1;
for (i = 0; ; i++) {
- char *name;
int alphabits, redbits;
if (nformats + 1 == nformats_allocated) {
nformats_allocated *= 2;
- format_list = realloc(format_list, sizeof(XRenderPictFormat *) *
- nformats_allocated);
- if (format_list == NULL)
+ formats = realloc(formats, sizeof(*formats) * nformats_allocated);
+ if (formats == NULL)
errx(1, "realloc error");
}
- format_list[nformats] = XRenderFindFormat(dpy, PictFormatType, &templ,
- i);
- if (format_list[nformats] == NULL)
- break;
+ format = XRenderFindFormat(dpy, PictFormatType, &templ, i);
+ if (!format)
+ break;
- alphabits = bit_count(format_list[nformats]->direct.alphaMask);
- redbits = bit_count(format_list[nformats]->direct.redMask);
+ formats[nformats].format = format;
+
+ alphabits = bit_count(format->direct.alphaMask);
+ redbits = bit_count(format->direct.redMask);
/* Our testing code isn't all that hot, so don't bother trying at
* the low depths yet.
@@ -280,31 +279,33 @@ create_formats_list(Display *dpy)
continue;
}
- describe_format(&name, NULL, format_list[nformats]);
+ describe_format(&formats[nformats].name, NULL, format);
if (format_whitelist_len != 0) {
bool ok = false;
int j;
for (j = 0; j < format_whitelist_len; j++) {
- if (strcmp(format_whitelist[j], name) == 0) {
+ if (strcmp(format_whitelist[j], formats[nformats].name) == 0) {
ok = true;
break;
}
}
if (!ok) {
- printf("Ignoring server-supported format: %s\n", name);
+ printf("Ignoring server-supported format: %s\n",
+ formats[nformats].name);
+ free(formats[nformats].name);
+ formats[nformats].name = NULL;
continue;
}
}
- if (format_list[nformats] == XRenderFindStandardFormat(dpy,
- PictStandardARGB32))
+ if (format == XRenderFindStandardFormat(dpy, PictStandardARGB32))
{
argb32index = nformats;
}
- printf("Found server-supported format: %s\n", name);
+ printf("Found server-supported format: %s\n", formats[nformats].name);
nformats++;
}
@@ -336,7 +337,7 @@ do_tests(Display *dpy, picture_info *win)
errx(1, "malloc error");
for (i = 0; i < num_dests; i++) {
- dests[i].format = format_list[i];
+ dests[i].format = formats[i].format;
dests[i].d = XCreatePixmap(dpy, DefaultRootWindow(dpy),
win_width, win_height, dests[i].format->depth);
dests[i].pict = XRenderCreatePicture(dpy, dests[i].d,
@@ -355,7 +356,7 @@ do_tests(Display *dpy, picture_info *win)
color4d *c = &colors[i / nformats];
/* The standard PictFormat numbers go from 0 to 4 */
- pictures_1x1[i].format = format_list[i % nformats];
+ pictures_1x1[i].format = formats[i % nformats].format;
pictures_1x1[i].d = XCreatePixmap(dpy, DefaultRootWindow(dpy),
1, 1, pictures_1x1[i].format->depth);
pa.repeat = true;
@@ -385,7 +386,7 @@ do_tests(Display *dpy, picture_info *win)
color4d *c = &colors[i / nformats];
/* The standard PictFormat numbers go from 0 to 4 */
- pictures_10x10[i].format = format_list[i % nformats];
+ pictures_10x10[i].format = formats[i % nformats].format;
pictures_10x10[i].d = XCreatePixmap(dpy, DefaultRootWindow(dpy),
10, 10, pictures_10x10[i].format->depth);
pictures_10x10[i].pict = XRenderCreatePicture(dpy,
@@ -423,7 +424,7 @@ do_tests(Display *dpy, picture_info *win)
c.green = (int)(colors[i].g*65535);
c.blue = (int)(colors[i].b*65535);
pictures_solid[i].pict = XRenderCreateSolidFill(dpy, &c);
- pictures_solid[i].format = format_list[argb32index];
+ pictures_solid[i].format = formats[argb32index].format;
pictures_solid[i].name = (char *)"Solid";
}