diff --git a/protocol/weston-test.xml b/protocol/weston-test.xml
index 00b7185d..f880414d 100644
--- a/protocol/weston-test.xml
+++ b/protocol/weston-test.xml
@@ -80,22 +80,6 @@
-
-
- Records an image of what is currently displayed on a given
- display output, returning the image as an event.
-
-
-
-
-
-
- The capture_screenshot_done signal is sent when a screenshot has been copied into the
- provided buffer.
-
-
diff --git a/tests/weston-test.c b/tests/weston-test.c
index ce4dcf29..be80bf92 100644
--- a/tests/weston-test.c
+++ b/tests/weston-test.c
@@ -338,250 +338,6 @@ device_add(struct wl_client *client,
}
}
-enum weston_test_screenshot_outcome {
- WESTON_TEST_SCREENSHOT_SUCCESS,
- WESTON_TEST_SCREENSHOT_NO_MEMORY,
- WESTON_TEST_SCREENSHOT_BAD_BUFFER
- };
-
-typedef void (*weston_test_screenshot_done_func_t)(void *data,
- enum weston_test_screenshot_outcome outcome);
-
-struct test_screenshot {
- struct weston_compositor *compositor;
- struct wl_global *global;
- struct wl_client *client;
- struct weston_process process;
- struct wl_listener destroy_listener;
-};
-
-struct test_screenshot_frame_listener {
- struct wl_listener listener;
- struct weston_buffer *buffer;
- struct weston_output *output;
- weston_test_screenshot_done_func_t done;
- void *data;
-};
-
-static void
-copy_bgra_yflip(uint8_t *dst, uint8_t *src, int height, int stride)
-{
- uint8_t *end;
-
- end = dst + height * stride;
- while (dst < end) {
- memcpy(dst, src, stride);
- dst += stride;
- src -= stride;
- }
-}
-
-
-static void
-copy_bgra(uint8_t *dst, uint8_t *src, int height, int stride)
-{
- /* TODO: optimize this out */
- memcpy(dst, src, height * stride);
-}
-
-static void
-copy_row_swap_RB(void *vdst, void *vsrc, int bytes)
-{
- uint32_t *dst = vdst;
- uint32_t *src = vsrc;
- uint32_t *end = dst + bytes / 4;
-
- while (dst < end) {
- uint32_t v = *src++;
- /* A R G B */
- uint32_t tmp = v & 0xff00ff00;
- tmp |= (v >> 16) & 0x000000ff;
- tmp |= (v << 16) & 0x00ff0000;
- *dst++ = tmp;
- }
-}
-
-static void
-copy_rgba_yflip(uint8_t *dst, uint8_t *src, int height, int stride)
-{
- uint8_t *end;
-
- end = dst + height * stride;
- while (dst < end) {
- copy_row_swap_RB(dst, src, stride);
- dst += stride;
- src -= stride;
- }
-}
-
-static void
-copy_rgba(uint8_t *dst, uint8_t *src, int height, int stride)
-{
- uint8_t *end;
-
- end = dst + height * stride;
- while (dst < end) {
- copy_row_swap_RB(dst, src, stride);
- dst += stride;
- src += stride;
- }
-}
-
-static void
-test_screenshot_frame_notify(struct wl_listener *listener, void *data)
-{
- struct test_screenshot_frame_listener *l =
- container_of(listener,
- struct test_screenshot_frame_listener, listener);
- struct weston_output *output = l->output;
- struct weston_compositor *compositor = output->compositor;
- int32_t stride;
- uint8_t *pixels, *d, *s;
-
- weston_output_disable_planes_decr(output);
- wl_list_remove(&listener->link);
- stride = l->buffer->width * (PIXMAN_FORMAT_BPP(compositor->read_format) / 8);
- pixels = malloc(stride * l->buffer->height);
-
- if (pixels == NULL) {
- l->done(l->data, WESTON_TEST_SCREENSHOT_NO_MEMORY);
- free(l);
- return;
- }
-
- /* FIXME: Needs to handle output transformations */
-
- compositor->renderer->read_pixels(output,
- compositor->read_format,
- pixels,
- 0, 0,
- output->current_mode->width,
- output->current_mode->height);
-
- stride = wl_shm_buffer_get_stride(l->buffer->shm_buffer);
-
- d = wl_shm_buffer_get_data(l->buffer->shm_buffer);
- s = pixels + stride * (l->buffer->height - 1);
-
- wl_shm_buffer_begin_access(l->buffer->shm_buffer);
-
- /* XXX: It would be nice if we used Pixman to do all this rather
- * than our own implementation
- */
- switch (compositor->read_format) {
- case PIXMAN_a8r8g8b8:
- case PIXMAN_x8r8g8b8:
- if (compositor->capabilities & WESTON_CAP_CAPTURE_YFLIP)
- copy_bgra_yflip(d, s, output->current_mode->height, stride);
- else
- copy_bgra(d, pixels, output->current_mode->height, stride);
- break;
- case PIXMAN_x8b8g8r8:
- case PIXMAN_a8b8g8r8:
- if (compositor->capabilities & WESTON_CAP_CAPTURE_YFLIP)
- copy_rgba_yflip(d, s, output->current_mode->height, stride);
- else
- copy_rgba(d, pixels, output->current_mode->height, stride);
- break;
- default:
- break;
- }
-
- wl_shm_buffer_end_access(l->buffer->shm_buffer);
-
- l->done(l->data, WESTON_TEST_SCREENSHOT_SUCCESS);
- free(pixels);
- free(l);
-}
-
-static bool
-weston_test_screenshot_shoot(struct weston_output *output,
- struct weston_buffer *buffer,
- weston_test_screenshot_done_func_t done,
- void *data)
-{
- struct test_screenshot_frame_listener *l;
-
- /* Get the shm buffer resource the client created */
- if (!wl_shm_buffer_get(buffer->resource)) {
- done(data, WESTON_TEST_SCREENSHOT_BAD_BUFFER);
- return false;
- }
-
- buffer->shm_buffer = wl_shm_buffer_get(buffer->resource);
- buffer->width = wl_shm_buffer_get_width(buffer->shm_buffer);
- buffer->height = wl_shm_buffer_get_height(buffer->shm_buffer);
-
- /* Verify buffer is big enough */
- if (buffer->width < output->current_mode->width ||
- buffer->height < output->current_mode->height) {
- done(data, WESTON_TEST_SCREENSHOT_BAD_BUFFER);
- return false;
- }
-
- /* allocate the frame listener */
- l = malloc(sizeof *l);
- if (l == NULL) {
- done(data, WESTON_TEST_SCREENSHOT_NO_MEMORY);
- return false;
- }
-
- /* Set up the listener */
- l->buffer = buffer;
- l->output = output;
- l->done = done;
- l->data = data;
- l->listener.notify = test_screenshot_frame_notify;
- wl_signal_add(&output->frame_signal, &l->listener);
-
- /* Fire off a repaint */
- weston_output_disable_planes_incr(output);
- weston_output_schedule_repaint(output);
-
- return true;
-}
-
-static void
-capture_screenshot_done(void *data, enum weston_test_screenshot_outcome outcome)
-{
- struct wl_resource *resource = data;
-
- switch (outcome) {
- case WESTON_TEST_SCREENSHOT_SUCCESS:
- weston_test_send_capture_screenshot_done(resource);
- break;
- case WESTON_TEST_SCREENSHOT_NO_MEMORY:
- wl_resource_post_no_memory(resource);
- break;
- default:
- break;
- }
-}
-
-
-/**
- * Grabs a snapshot of the screen.
- */
-static void
-capture_screenshot(struct wl_client *client,
- struct wl_resource *resource,
- struct wl_resource *output_resource,
- struct wl_resource *buffer_resource)
-{
- struct weston_output *output =
- weston_head_from_resource(output_resource)->output;
- struct weston_buffer *buffer =
- weston_buffer_from_resource(buffer_resource);
-
- if (buffer == NULL) {
- wl_resource_post_no_memory(resource);
- return;
- }
-
- weston_test_screenshot_shoot(output, buffer,
- capture_screenshot_done, resource);
-}
-
static void
send_touch(struct wl_client *client, struct wl_resource *resource,
uint32_t tv_sec_hi, uint32_t tv_sec_lo, uint32_t tv_nsec,
@@ -608,7 +364,6 @@ static const struct weston_test_interface test_implementation = {
send_key,
device_release,
device_add,
- capture_screenshot,
send_touch,
};