From c0a310b4090bf4d15c85b17973c91e0eb3880be7 Mon Sep 17 00:00:00 2001 From: "K. Lange" Date: Mon, 17 Sep 2018 10:09:49 +0900 Subject: [PATCH] Quick and dirty RGBA raw screenshots --- apps/compositor.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/apps/compositor.c b/apps/compositor.c index 7b9988fa..7db5d1e9 100644 --- a/apps/compositor.c +++ b/apps/compositor.c @@ -1080,7 +1080,44 @@ static void yutani_blit_windows(yutani_globals_t * yg) { * Take a screenshot */ static void yutani_screenshot(yutani_globals_t * yg) { - /* TODO Render bitmap screenshot */ + int task = yg->screenshot_frame; + yg->screenshot_frame = 0; + + /* raw screenshots */ + FILE * f = fopen("/tmp/screenshot.rgba", "w"); + if (!f) { + TRACE("Error opening output file for screenshot."); + return; + } + + uint32_t * buffer = NULL; + int width, height; + + if (task == YUTANI_SCREENSHOT_FULL) { + buffer = (void *)yg->backend_ctx->backbuffer; + width = yg->width; + height = yg->height; + } else if (task == YUTANI_SCREENSHOT_WINDOW) { + yutani_server_window_t * window = yg->focused_window; + buffer = (void *)window->buffer; + width = window->width; + height = window->height; + } + + if (buffer) { + for (int y = 0; y