[PATCH weston v2 13/14] tests: Add check_surfaces_geometry()

Bryce Harrington bryce at osg.samsung.com
Fri May 15 01:21:58 PDT 2015


Minor refactoring to simplify initial sanity checks of surfaces.
Conceivably useful for other basic checking.

Signed-off-by: Bryce Harrington <bryce at osg.samsung.com>
---
 tests/weston-test-client-helper.c | 41 ++++++++++++++++++++++++++-------------
 tests/weston-test-client-helper.h |  3 +++
 2 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/tests/weston-test-client-helper.c b/tests/weston-test-client-helper.c
index f9de7c8..b63634d 100644
--- a/tests/weston-test-client-helper.c
+++ b/tests/weston-test-client-helper.c
@@ -877,6 +877,31 @@ screenshot_reference_filename(const char *basename, uint32_t seq) {
 }
 
 /**
+ * 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
  *
  * Returns true if surface buffers have all the same byte values,
@@ -889,11 +914,8 @@ check_surfaces_equal(const struct surface *a, const struct surface *b)
 	int y;
 	void *p, *q;
 
-	if (a == NULL || b == NULL)
+	if (!check_surfaces_geometry(a, b))
 		return false;
-	if (a->width != b->width || a->height != a->height)
-		return false;
-
 	if (a->stride == b->stride) {
 		printf("Checking data for equivalent strides\n");
 		return (memcmp(a->data, b->data, a->stride * a->height) == 0);
@@ -926,18 +948,9 @@ check_surfaces_match_in_clip(const struct surface *a, const struct surface *b, c
 	void *p, *q;
 	char a_char, b_char;
 
-	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;
diff --git a/tests/weston-test-client-helper.h b/tests/weston-test-client-helper.h
index 1380bb6..407a8ab 100644
--- a/tests/weston-test-client-helper.h
+++ b/tests/weston-test-client-helper.h
@@ -201,6 +201,9 @@ 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);
 
 bool
-- 
1.9.1



More information about the wayland-devel mailing list