screencopy: add support for frame flags

This commit is contained in:
emersion 2018-06-23 14:02:43 +01:00
parent bd8be19b79
commit 2b9cbaddf3
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
9 changed files with 77 additions and 32 deletions

View file

@ -43,8 +43,9 @@ static void frame_handle_output_swap_buffers(struct wl_listener *listener,
wl_shm_buffer_begin_access(buffer);
void *data = wl_shm_buffer_get_data(buffer);
bool ok = wlr_renderer_read_pixels(renderer, fmt, stride, width, height,
0, 0, 0, 0, data);
uint32_t flags = 0;
bool ok = wlr_renderer_read_pixels(renderer, fmt, &flags, stride,
width, height, 0, 0, 0, 0, data);
wl_shm_buffer_end_access(buffer);
if (!ok) {
@ -52,6 +53,8 @@ static void frame_handle_output_swap_buffers(struct wl_listener *listener,
return;
}
zwlr_screencopy_frame_v1_send_flags(frame->resource, flags);
uint32_t tv_sec_hi = event->when->tv_sec >> 32;
uint32_t tv_sec_lo = event->when->tv_sec & 0xFFFFFFFF;
zwlr_screencopy_frame_v1_send_ready(frame->resource,
@ -172,7 +175,7 @@ static void manager_handle_capture_output(struct wl_client *client,
frame->height = output->height;
// TODO: don't send zero
zwlr_screencopy_frame_v1_send_buffer(frame->resource,
frame->width, frame->height, 0, 0, 0);
frame->width, frame->height, 0, 0);
}
static void manager_handle_destroy(struct wl_client *client,

View file

@ -50,8 +50,8 @@ static void output_handle_frame(struct wl_listener *listener, void *_data) {
int32_t stride = wl_shm_buffer_get_stride(shm_buffer);
wl_shm_buffer_begin_access(shm_buffer);
void *data = wl_shm_buffer_get_data(shm_buffer);
bool ok = wlr_renderer_read_pixels(renderer, format, stride, width, height,
0, 0, 0, 0, data);
bool ok = wlr_renderer_read_pixels(renderer, format, NULL, stride,
width, height, 0, 0, 0, 0, data);
wl_shm_buffer_end_access(shm_buffer);
if (!ok) {