tests: Add write_surface_as_png() helper
authorBryce Harrington <bryce@osg.samsung.com>
Thu, 14 May 2015 19:21:13 +0000 (12:21 -0700)
committerBryce Harrington <bryce@osg.samsung.com>
Thu, 21 May 2015 22:06:15 +0000 (15:06 -0700)
And use the helper routine for generating the output filename.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
tests/internal-screenshot-test.c

index 27b1547..5ae9b8b 100644 (file)
 
 char *server_parameters="--use-pixman --width=320 --height=240";
 
+/** write_surface_as_png()
+ *
+ * Writes out a given weston test surface to disk as a PNG image
+ * using the provided filename (with path).
+ *
+ * @returns true if successfully saved file; false otherwise.
+ */
+static bool
+write_surface_as_png(const struct surface* weston_surface, const char *fname) {
+       cairo_surface_t *cairo_surface;
+       cairo_status_t status;
+       int bpp = 4; /* Assume ARGB */
+       int stride = bpp * weston_surface->width;
+
+       cairo_surface = cairo_image_surface_create_for_data(weston_surface->data,
+                                                           CAIRO_FORMAT_ARGB32,
+                                                           weston_surface->width,
+                                                           weston_surface->height,
+                                                           stride);
+       printf("Writing PNG to disk\n");
+       status = cairo_surface_write_to_png(cairo_surface, fname);
+       if (status != CAIRO_STATUS_SUCCESS) {
+               printf("Failed to save screenshot: %s\n",
+                      cairo_status_to_string(status));
+               return false;
+       }
+       cairo_surface_destroy(cairo_surface);
+       return true;
+}
+
 TEST(internal_screenshot)
 {
        struct client *client;
@@ -121,20 +151,8 @@ TEST(internal_screenshot)
 
        /* Test dumping of non-matching images */
        if (!match || dump_all_images) {
-               /* Write image to .png file */
-               cairo_surface_t *surface;
-               int bpp = 4; /* ARGB assumed */
-               int stride = bpp * screenshot->width;
-
-               surface = cairo_image_surface_create_for_data(screenshot->data,
-                                                             CAIRO_FORMAT_ARGB32,
-                                                             screenshot->width,
-                                                             screenshot->height,
-                                                             stride);
-
-               printf("Writing PNG to disk\n");
-               cairo_surface_write_to_png(surface, "clientside-screenshot.png");
-               cairo_surface_destroy(surface);
+               fname = screenshot_output_filename("internal-screenshot", 0);
+               write_surface_as_png(screenshot, fname);
        }
 
        free(screenshot);