server->cycle_view);
desktop_move_to_front(server->cycle_view);
server->cycle_view = NULL;
- wlr_scene_node_set_enabled(
- &server->osd_tree->node, false);
+ osd_finish(server);
}
}
return height;
}
+static void
+destroy_osd_nodes(struct server *server)
+{
+ struct wlr_scene_node *child, *next;
+ struct wl_list *children = &server->osd_tree->node.state.children;
+ wl_list_for_each_safe(child, next, children, state.link) {
+ wlr_scene_node_destroy(child);
+ }
+}
+
+void
+osd_finish(struct server *server)
+{
+ destroy_osd_nodes(server);
+ wlr_scene_node_set_enabled(&server->osd_tree->node, false);
+}
+
void
osd_update(struct server *server)
{
struct theme *theme = server->theme;
+ destroy_osd_nodes(server);
struct output *output;
wl_list_for_each(output, &server->outputs, link) {
float scale = output->wlr_output->scale;
pango_cairo_show_layout(cairo, layout);
y += OSD_ITEM_HEIGHT;
}
-
g_object_unref(layout);
cairo_surface_flush(surf);