screenshooter: Properly handle multiple outputs.
[profile/ivi/weston.git] / src / compositor-wayland.c
index 593e272..c79d6b5 100644 (file)
@@ -377,6 +377,20 @@ wayland_output_destroy(struct weston_output *output_base)
        return;
 }
 
+static void
+wayland_output_read_pixels(struct weston_output *output_base, void *data)
+{
+       struct wayland_output *output = (struct wayland_output *) output_base;
+       struct wayland_compositor *compositor =
+               (struct wayland_compositor *) output->base.compositor;
+
+       eglMakeCurrent(compositor->base.display, output->egl_surface,
+                       output->egl_surface, compositor->base.context);
+
+       glReadPixels(0, 0, output_base->current->width, output_base->current->height,
+                               GL_BGRA_EXT, GL_UNSIGNED_BYTE, data);
+}
+
 static int
 wayland_compositor_create_output(struct wayland_compositor *c,
                                 int width, int height)
@@ -444,6 +458,7 @@ wayland_compositor_create_output(struct wayland_compositor *c,
        output->base.repaint = wayland_output_repaint;
        output->base.destroy = wayland_output_destroy;
        output->base.assign_planes = NULL;
+       output->base.read_pixels = wayland_output_read_pixels;
        output->base.set_backlight = NULL;
        output->base.set_dpms = NULL;