mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
osd: fix memory leak of output->osd_buffer
This commit is contained in:
parent
2d3be5ab56
commit
3f2cc1b29f
2 changed files with 5 additions and 10 deletions
|
|
@ -401,8 +401,6 @@ struct output {
|
||||||
|
|
||||||
struct wl_list regions; /* struct region.link */
|
struct wl_list regions; /* struct region.link */
|
||||||
|
|
||||||
struct lab_data_buffer *osd_buffer;
|
|
||||||
|
|
||||||
struct wl_listener destroy;
|
struct wl_listener destroy;
|
||||||
struct wl_listener frame;
|
struct wl_listener frame;
|
||||||
struct wl_listener request_state;
|
struct wl_listener request_state;
|
||||||
|
|
|
||||||
13
src/osd.c
13
src/osd.c
|
|
@ -347,22 +347,19 @@ display_osd(struct output *output, struct wl_array *views)
|
||||||
h += theme->osd_window_switcher_item_height;
|
h += theme->osd_window_switcher_item_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset buffer */
|
struct lab_data_buffer *buffer = buffer_create_cairo(w, h, scale);
|
||||||
if (output->osd_buffer) {
|
if (!buffer) {
|
||||||
wlr_buffer_drop(&output->osd_buffer->base);
|
|
||||||
}
|
|
||||||
output->osd_buffer = buffer_create_cairo(w, h, scale);
|
|
||||||
if (!output->osd_buffer) {
|
|
||||||
wlr_log(WLR_ERROR, "Failed to allocate cairo buffer for the window switcher");
|
wlr_log(WLR_ERROR, "Failed to allocate cairo buffer for the window switcher");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Render OSD image */
|
/* Render OSD image */
|
||||||
cairo_t *cairo = output->osd_buffer->cairo;
|
cairo_t *cairo = buffer->cairo;
|
||||||
render_osd(server, cairo, w, h, show_workspace, workspace_name, views);
|
render_osd(server, cairo, w, h, show_workspace, workspace_name, views);
|
||||||
|
|
||||||
struct wlr_scene_buffer *scene_buffer = wlr_scene_buffer_create(
|
struct wlr_scene_buffer *scene_buffer = wlr_scene_buffer_create(
|
||||||
output->osd_tree, &output->osd_buffer->base);
|
output->osd_tree, &buffer->base);
|
||||||
|
wlr_buffer_drop(&buffer->base);
|
||||||
wlr_scene_buffer_set_dest_size(scene_buffer, w, h);
|
wlr_scene_buffer_set_dest_size(scene_buffer, w, h);
|
||||||
|
|
||||||
/* Center OSD */
|
/* Center OSD */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue