diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-01-23 01:05:20 +0100 |
---|---|---|
committer | Daniel Stone <daniels@collabora.com> | 2018-02-09 15:16:07 +0000 |
commit | e3c2a76d8f6ec09da2dc7fb3e9e9a56f8f48ca44 (patch) | |
tree | 5e6f212f1a783fed95255dedc6da94b8fb5d8e19 /clients | |
parent | e8ff7df863a10eb4be5273017fb544b5f823fc6a (diff) | |
download | weston-e3c2a76d8f6ec09da2dc7fb3e9e9a56f8f48ca44.tar.gz weston-e3c2a76d8f6ec09da2dc7fb3e9e9a56f8f48ca44.tar.bz2 weston-e3c2a76d8f6ec09da2dc7fb3e9e9a56f8f48ca44.zip |
screenshot: save each new screenshot in a different file
Instead of overwriting the 'wayland-screenshot.png' file over and
over, store each requested screenshot in a filename based on timestamp
and sequence number.
Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Diffstat (limited to 'clients')
-rw-r--r-- | clients/screenshot.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/clients/screenshot.c b/clients/screenshot.c index 6e43d5ce..be8d9fe6 100644 --- a/clients/screenshot.c +++ b/clients/screenshot.c @@ -39,6 +39,7 @@ #include "weston-screenshooter-client-protocol.h" #include "shared/os-compatibility.h" #include "shared/xalloc.h" +#include "shared/file-util.h" /* The screenshooter is a good example of a custom object exposed by * the compositor and serves as a test bed for implementing client @@ -188,6 +189,8 @@ write_png(int width, int height) cairo_surface_t *surface; void *data, *d, *s; struct screenshooter_output *output, *next; + FILE *fp; + char filepath[PATH_MAX]; buffer_stride = width * 4; @@ -213,7 +216,12 @@ write_png(int width, int height) surface = cairo_image_surface_create_for_data(data, CAIRO_FORMAT_ARGB32, width, height, buffer_stride); - cairo_surface_write_to_png(surface, "wayland-screenshot.png"); + + fp = file_create_dated("wayland-screenshot-", ".png", filepath, sizeof(filepath)); + if (fp) { + fclose (fp); + cairo_surface_write_to_png(surface, filepath); + } cairo_surface_destroy(surface); free(data); } |