tests: Add write_surface_as_png() helper

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>
dev
Bryce Harrington 10 years ago
parent fb9089d4f5
commit 85e65f5fe5
  1. 46
      tests/internal-screenshot-test.c

@ -31,6 +31,36 @@
char *server_parameters="--use-pixman --width=320 --height=240"; 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) TEST(internal_screenshot)
{ {
struct client *client; struct client *client;
@ -121,20 +151,8 @@ TEST(internal_screenshot)
/* Test dumping of non-matching images */ /* Test dumping of non-matching images */
if (!match || dump_all_images) { if (!match || dump_all_images) {
/* Write image to .png file */ fname = screenshot_output_filename("internal-screenshot", 0);
cairo_surface_t *surface; write_surface_as_png(screenshot, fname);
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);
} }
free(screenshot); free(screenshot);

Loading…
Cancel
Save