aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--types/wlr_screencopy_v1.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/types/wlr_screencopy_v1.c b/types/wlr_screencopy_v1.c
index 32df6c56..530cacb5 100644
--- a/types/wlr_screencopy_v1.c
+++ b/types/wlr_screencopy_v1.c
@@ -209,16 +209,18 @@ static bool frame_shm_copy(struct wlr_screencopy_frame_v1 *frame,
}
uint32_t renderer_flags = 0;
- bool ok;
- ok = wlr_renderer_begin_with_buffer(renderer, src_buffer);
- ok = ok && wlr_renderer_read_pixels(renderer, format, &renderer_flags,
+ bool ok = false;
+ if (!wlr_renderer_begin_with_buffer(renderer, src_buffer)) {
+ goto out;
+ }
+ ok = wlr_renderer_read_pixels(renderer, format, &renderer_flags,
stride, width, height, x, y, 0, 0, data);
wlr_renderer_end(renderer);
*flags = renderer_flags & WLR_RENDERER_READ_PIXELS_Y_INVERT ?
ZWLR_SCREENCOPY_FRAME_V1_FLAGS_Y_INVERT : 0;
+out:
wlr_buffer_end_data_ptr_access(frame->buffer);
-
return ok;
}