summaryrefslogtreecommitdiff
path: root/clients
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-01-23 01:05:20 +0100
committerDaniel Stone <daniels@collabora.com>2018-02-09 15:16:07 +0000
commite3c2a76d8f6ec09da2dc7fb3e9e9a56f8f48ca44 (patch)
tree5e6f212f1a783fed95255dedc6da94b8fb5d8e19 /clients
parente8ff7df863a10eb4be5273017fb544b5f823fc6a (diff)
downloadweston-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.c10
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);
}