client/pool-buffer: munmap in destroy_buffer

master
emersion 7 years ago
parent 8df2238956
commit 36d5d4b40f
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48

@ -72,7 +72,7 @@ static struct pool_buffer *create_buffer(struct wl_shm *shm,
struct pool_buffer *buf, int32_t width, int32_t height, struct pool_buffer *buf, int32_t width, int32_t height,
uint32_t format) { uint32_t format) {
uint32_t stride = width * 4; uint32_t stride = width * 4;
uint32_t size = stride * height; size_t size = stride * height;
char *name; char *name;
int fd = create_pool_file(size, &name); int fd = create_pool_file(size, &name);
@ -87,8 +87,10 @@ static struct pool_buffer *create_buffer(struct wl_shm *shm,
free(name); free(name);
fd = -1; fd = -1;
buf->size = size;
buf->width = width; buf->width = width;
buf->height = height; buf->height = height;
buf->data = data;
buf->surface = cairo_image_surface_create_for_data(data, buf->surface = cairo_image_surface_create_for_data(data,
CAIRO_FORMAT_ARGB32, width, height, stride); CAIRO_FORMAT_ARGB32, width, height, stride);
buf->cairo = cairo_create(buf->surface); buf->cairo = cairo_create(buf->surface);
@ -111,6 +113,9 @@ void destroy_buffer(struct pool_buffer *buffer) {
if (buffer->pango) { if (buffer->pango) {
g_object_unref(buffer->pango); g_object_unref(buffer->pango);
} }
if (buffer->data) {
munmap(buffer->data, buffer->size);
}
memset(buffer, 0, sizeof(struct pool_buffer)); memset(buffer, 0, sizeof(struct pool_buffer));
} }

@ -12,6 +12,8 @@ struct pool_buffer {
cairo_t *cairo; cairo_t *cairo;
PangoContext *pango; PangoContext *pango;
uint32_t width, height; uint32_t width, height;
void *data;
size_t size;
bool busy; bool busy;
}; };

Loading…
Cancel
Save