]> git.mdlowis.com Git - proto/labwc.git/commitdiff
osd: simplify to only use one view-array
authorJohan Malm <jgm323@gmail.com>
Sat, 12 Aug 2023 18:59:05 +0000 (19:59 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Sun, 20 Aug 2023 08:56:49 +0000 (09:56 +0100)
src/osd.c

index 3b30ed9aa745d546ef4bd05905597699fa429dd5..6bce6fe67122e6610cfd96c145e6c63e7a35e852 100644 (file)
--- a/src/osd.c
+++ b/src/osd.c
@@ -258,7 +258,7 @@ get_title(struct view *view)
 static void
 render_osd(struct server *server, cairo_t *cairo, int w, int h,
                struct wl_list *node_list, bool show_workspace,
-               const char *workspace_name, enum lab_view_criteria criteria)
+               const char *workspace_name, struct wl_array *views)
 {
        struct view *cycle_view = server->osd_state.cycle_view;
        struct theme *theme = server->theme;
@@ -317,10 +317,7 @@ render_osd(struct server *server, cairo_t *cairo, int w, int h,
 
        /* Draw text for each node */
        struct view **view;
-       struct wl_array views;
-       wl_array_init(&views);
-       desktop_views_append(server, &views, criteria);
-       wl_array_for_each(view, &views) {
+       wl_array_for_each(view, views) {
                /*
                 *    OSD border
                 * +---------------------------------+
@@ -391,23 +388,18 @@ render_osd(struct server *server, cairo_t *cairo, int w, int h,
        }
        free(buf.buf);
        g_object_unref(layout);
-       wl_array_release(&views);
 
        cairo_surface_flush(surf);
 }
 
 static int
-get_osd_height(struct server *server, enum lab_view_criteria criteria)
+get_osd_height(struct server *server, struct wl_array *views)
 {
        int height = 0;
-       struct wl_array views;
-       wl_array_init(&views);
-       desktop_views_append(server, &views, criteria);
 
        /* Includes item border width */
-       size_t len = views.size / sizeof(struct view *);
+       size_t len = views->size / sizeof(struct view *);
        height += len * rc.theme->osd_window_switcher_item_height;
-       wl_array_release(&views);
 
        /* Add OSD border width */
        height += 2 * rc.theme->osd_border_width;
@@ -434,7 +426,7 @@ display_osd(struct output *output)
 
        float scale = output->wlr_output->scale;
        int w = theme->osd_window_switcher_width;
-       int h = get_osd_height(server, criteria);
+       int h = get_osd_height(server, &views);
        if (show_workspace) {
                /* workspace indicator */
                h += theme->osd_window_switcher_item_height;
@@ -449,7 +441,8 @@ display_osd(struct output *output)
        /* Render OSD image */
        cairo_t *cairo = output->osd_buffer->cairo;
        render_osd(server, cairo, w, h, node_list, show_workspace,
-               workspace_name, criteria);
+               workspace_name, &views);
+       wl_array_release(&views);
 
        struct wlr_scene_buffer *scene_buffer = wlr_scene_buffer_create(
                output->osd_tree, &output->osd_buffer->base);