...rather than free(buffer->data)
{
struct lab_data_buffer *buffer = data_buffer_from_buffer(wlr_buffer);
if (buffer->cairo) {
+ cairo_surface_t *surf = cairo_get_target(buffer->cairo);
cairo_destroy(buffer->cairo);
- }
- if (buffer->data) {
- free(buffer->data);
+ cairo_surface_destroy(surf);
}
free(buffer);
}
if (!buffer->data) {
cairo_destroy(buffer->cairo);
+ cairo_surface_destroy(surf);
free(buffer);
+ buffer = NULL;
}
return buffer;
}