- fp = file_create_dated(getenv("XDG_PICTURES_DIR"), "agl-screenshot-",
- ".png", filepath, sizeof(filepath));
- if (fp) {
- fclose(fp);
- cairo_surface_write_to_png(surface, filepath);
- }
-
- cairo_surface_destroy(surface);
- free(data);
-}
-
-static void
-screenshot_write_png(const struct buffer_size *buff_size,
- struct wl_list *output_list)
-{
- int output_stride, buffer_stride, i;
- cairo_surface_t *surface;
- void *data, *d, *s;
- struct screenshooter_output *output, *next;
- FILE *fp;
- char filepath[PATH_MAX];
-
- buffer_stride = buff_size->width * 4;
-
- data = xmalloc(buffer_stride * buff_size->height);
- if (!data)
- return;
-
- wl_list_for_each_safe(output, next, output_list, link) {
- output_stride = output->width * 4;
- s = output->data;
- d = data + (output->offset_y - buff_size->min_y) * buffer_stride +
- (output->offset_x - buff_size->min_x) * 4;
-
- for (i = 0; i < output->height; i++) {
- memcpy(d, s, output_stride);
- d += buffer_stride;
- s += output_stride;
- }
-
- free(output);
- }
+ if (fn)
+ str_printf(&filename_to_write, "agl-screenshot-%s-", fn);
+ else
+ str_printf(&filename_to_write, "agl-screenshot-");