mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-02-04 22:20:28 +01:00
tests: Add check_surfaces_geometry()
Minor refactoring to simplify initial sanity checks of surfaces. Conceivably useful for other basic checking. Signed-off-by: Bryce Harrington <bryce@osg.samsung.com> Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
This commit is contained in:
parent
198f941ec8
commit
39a5be2a1f
2 changed files with 30 additions and 13 deletions
|
|
@ -876,6 +876,31 @@ screenshot_reference_filename(const char *basename, uint32_t seq) {
|
|||
return filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* check_surfaces_geometry() - verifies two surfaces are same size
|
||||
*
|
||||
* @returns true if surfaces have the same width and height, or false
|
||||
* if not, or if there is no actual data.
|
||||
*/
|
||||
bool
|
||||
check_surfaces_geometry(const struct surface *a, const struct surface *b)
|
||||
{
|
||||
if (a == NULL || b == NULL) {
|
||||
printf("Undefined surfaces\n");
|
||||
return false;
|
||||
}
|
||||
else if (a->data == NULL || b->data == NULL) {
|
||||
printf("Undefined data\n");
|
||||
return false;
|
||||
}
|
||||
else if (a->width != b->width || a->height != b->height) {
|
||||
printf("Mismatched dimensions: %d,%d != %d,%d\n",
|
||||
a->width, a->height, b->width, b->height);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* check_surfaces_equal() - tests if two surfaces are pixel-identical
|
||||
*
|
||||
|
|
@ -888,9 +913,7 @@ check_surfaces_equal(const struct surface *a, const struct surface *b)
|
|||
{
|
||||
int bpp = 4; /* Assumes ARGB */
|
||||
|
||||
if (a == NULL || b == NULL)
|
||||
return false;
|
||||
if (a->width != b->width || a->height != b->height)
|
||||
if (!check_surfaces_geometry(a, b))
|
||||
return false;
|
||||
|
||||
return (memcmp(a->data, b->data, bpp * a->width * a->height) == 0);
|
||||
|
|
@ -912,18 +935,9 @@ check_surfaces_match_in_clip(const struct surface *a, const struct surface *b, c
|
|||
void *p, *q;
|
||||
int bpp = 4; /* Assumes ARGB */
|
||||
|
||||
if (a == NULL || b == NULL || clip_rect == NULL)
|
||||
if (!check_surfaces_geometry(a, b) || clip_rect == NULL)
|
||||
return false;
|
||||
|
||||
if (a->data == NULL || b->data == NULL) {
|
||||
printf("Undefined data\n");
|
||||
return false;
|
||||
}
|
||||
if (a->width != b->width || a->height != b->height) {
|
||||
printf("Mismatched dimensions: %d,%d != %d,%d\n",
|
||||
a->width, a->height, b->width, b->height);
|
||||
return false;
|
||||
}
|
||||
if (clip_rect->x > a->width || clip_rect->y > a->height) {
|
||||
printf("Clip outside image boundaries\n");
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -199,6 +199,9 @@ screenshot_output_filename(const char *basename, uint32_t seq);
|
|||
char*
|
||||
screenshot_reference_filename(const char *basename, uint32_t seq);
|
||||
|
||||
bool
|
||||
check_surfaces_geometry(const struct surface *a, const struct surface *b);
|
||||
|
||||
bool
|
||||
check_surfaces_equal(const struct surface *a, const struct surface *b);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue