screenshooter: Grab pixel data directly before buffer swap
diff --git a/src/compositor.c b/src/compositor.c
index ddbc077..2b46fbc 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2389,6 +2389,7 @@
output->mm_width = width;
output->mm_height = height;
output->dirty = 1;
+ wl_list_init(&output->read_pixels_list);
output->zoom.active = 0;
output->zoom.increment = 0.05;
@@ -2412,6 +2413,20 @@
output, bind_output);
}
+WL_EXPORT void
+weston_output_do_read_pixels(struct weston_output *output)
+{
+ struct weston_read_pixels *r, *next;
+
+ glPixelStorei(GL_PACK_ALIGNMENT, 1);
+ wl_list_for_each_safe(r, next, &output->read_pixels_list, link) {
+ glReadPixels(r->x, r->y, r->width, r->height,
+ output->compositor->read_format,
+ GL_UNSIGNED_BYTE, r->data);
+ r->done(r, output);
+ }
+}
+
static void
compositor_bind(struct wl_client *client,
void *data, uint32_t version, uint32_t id)