diff options
| -rw-r--r-- | backend/x11/output.c | 25 | 
1 files changed, 13 insertions, 12 deletions
| diff --git a/backend/x11/output.c b/backend/x11/output.c index 58c90a89..db63f82f 100644 --- a/backend/x11/output.c +++ b/backend/x11/output.c @@ -448,25 +448,26 @@ static bool output_cursor_to_picture(struct wlr_x11_output *output,  		return true;  	} -	int depth = 32; -	int stride = buffer->width * 4; - -	uint8_t *data = malloc(buffer->height * stride); -	if (data == NULL) { +	struct wlr_texture *texture = wlr_texture_from_buffer(renderer, buffer); +	if (!texture) {  		return false;  	} -	if (!wlr_renderer_begin_with_buffer(renderer, buffer)) { -		free(data); +	int depth = 32; +	int stride = texture->width * 4; +	uint8_t *data = malloc(texture->height * stride); +	if (data == NULL) { +		wlr_texture_destroy(texture);  		return false;  	} -	bool result = wlr_renderer_read_pixels( -		renderer, DRM_FORMAT_ARGB8888, -		stride, buffer->width, buffer->height, 0, 0, 0, 0, -		data); +	bool result = wlr_texture_read_pixels(texture, &(struct wlr_texture_read_pixels_options) { +		.format = DRM_FORMAT_ARGB8888, +		.stride = stride, +		.data = data, +	}); -	wlr_renderer_end(renderer); +	wlr_texture_destroy(texture);  	if (!result) {  		free(data); | 
