summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2012-03-27 15:25:46 -0400
committerKristian Høgsberg <krh@bitplanet.net>2012-03-27 15:59:46 -0400
commitf9247ddc315bfbd7ec28867c5b91145ef1d90bf1 (patch)
treec281a1a9485caf927858c196fa229ec90c1ed7d6
parent9629fe32060cda8ebad45f80fb480a26317c67c6 (diff)
compositor: Use GL_BGRA_EXT for glReadPixels in screenshooter
This needs GL_EXT_read_format_bgra.
-rw-r--r--src/compositor.c5
-rw-r--r--src/screenshooter.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/compositor.c b/src/compositor.c
index 3b2ebd4..c83731c 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2321,6 +2321,11 @@ weston_compositor_init(struct weston_compositor *ec, struct wl_display *display)
return -1;
}
+ if (!strstr(extensions, "GL_EXT_read_format_bgra")) {
+ fprintf(stderr, "GL_EXT_read_format_bgra not available\n");
+ return -1;
+ }
+
extensions =
(const char *) eglQueryString(ec->display, EGL_EXTENSIONS);
if (strstr(extensions, "EGL_WL_bind_wayland_display"))
diff --git a/src/screenshooter.c b/src/screenshooter.c
index 6748645..f9497f7 100644
--- a/src/screenshooter.c
+++ b/src/screenshooter.c
@@ -62,7 +62,7 @@ screenshooter_shoot(struct wl_client *client,
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, output->current->width, output->current->height,
- GL_RGBA, GL_UNSIGNED_BYTE, tmp);
+ GL_BGRA_EXT, GL_UNSIGNED_BYTE, tmp);
d = wl_shm_buffer_get_data(buffer);
s = tmp + stride * (buffer->height - 1);