That option will save all the images which are created and intended to paint on screen. The images will be saved in folder "saveimages" with PNG format. Signed-off-by: Yi Sun <yi.sun at intel.com> diff --git a/tests/testdisplay.c b/tests/testdisplay.c index 4430d07..2d1fdb0 100644 --- a/tests/testdisplay.c +++ b/tests/testdisplay.c @@ -64,6 +64,7 @@ #include <stdlib.h> #include <signal.h> +#include <sys/stat.h> drmModeRes *resources; int drm_fd, modes; @@ -72,6 +73,7 @@ int dump_info = 0, test_all_modes =0, test_preferred_mode = 0, force_mode = 0, int sleep_between_modes = 5; uint32_t depth = 24, stride, bpp; int qr_code = 0; +int save_image = 0; drmModeModeInfo force_timing; @@ -379,6 +381,8 @@ paint_output_info(cairo_t *cr, int l_width, int l_height, void *priv) cairo_text_extents_t name_extents, mode_extents; char name_buf[128], mode_buf[128]; int i, x, y, modes_x, modes_y; + static int count = 0; + count++; /* Get text extents for each string */ snprintf(name_buf, sizeof name_buf, "%s", @@ -460,6 +464,25 @@ paint_output_info(cairo_t *cr, int l_width, int l_height, void *priv) if (qr_code) paint_image(cr, "./pass.png"); + + if (save_image){ + char pngname[256]; + char *pos; + + readlink("/proc/self/exe", pngname, sizeof(pngname)); + pos = strrchr(pngname, '/'); + *(pos + 1) = '\0'; + + strcat(pngname, "saveimages"); + + //judge whether folder mkdir existed, if not create it. + if(access(pngname,0) == -1) + if (mkdir( pngname,0777)) + fprintf (stderr, "error %d, %s\n", errno, strerror (errno)); + + sprintf(pngname, "%s/%d_%s@%d.png", pngname, count, c->mode.name, c->mode.vrefresh); + cairo_surface_write_to_png( cairo_get_target(cr), pngname ); + } } static void sighandler(int signo) @@ -599,7 +622,7 @@ int update_display(void) return 1; } -static char optstr[] = "hiaf:s:d:p:mrt"; +static char optstr[] = "hiaf:s:d:p:mrtg"; static void usage(char *name) { @@ -612,6 +635,7 @@ static void usage(char *name) fprintf(stderr, "\t-m\ttest the preferred mode\n"); fprintf(stderr, "\t-t\tuse a tiled framebuffer\n"); fprintf(stderr, "\t-r\tprint a QR code on the screen whose content is \"pass\" for the automatic test\n"); + fprintf(stderr, "\t-g\tsave images which is intended to paint on the screen as png files in folder \"saveimages\"\n"); fprintf(stderr, "\t-f\t<clock MHz>,<hdisp>,<hsync-start>,<hsync-end>,<htotal>,\n"); fprintf(stderr, "\t\t<vdisp>,<vsync-start>,<vsync-end>,<vtotal>\n"); fprintf(stderr, "\t\ttest force mode\n"); @@ -704,6 +728,9 @@ int main(int argc, char **argv) case 'r': qr_code = 1; break; + case 'g': + save_image = 1; + break; default: fprintf(stderr, "unknown option %c\n", c); /* fall through */ -- 1.7.6.4