mirror of
https://github.com/labwc/labwc.git
synced 2025-11-03 09:01:51 -05:00
osd: only call wl_array_{init,relesase} once
This commit is contained in:
parent
247d2b581c
commit
72a41058af
1 changed files with 10 additions and 20 deletions
30
src/osd.c
30
src/osd.c
|
|
@ -397,20 +397,16 @@ render_osd(struct server *server, cairo_t *cairo, int w, int h,
|
|||
}
|
||||
|
||||
static void
|
||||
display_osd(struct output *output)
|
||||
display_osd(struct output *output, struct wl_array *views)
|
||||
{
|
||||
struct server *server = output->server;
|
||||
struct theme *theme = server->theme;
|
||||
bool show_workspace = wl_list_length(&rc.workspace_config.workspaces) > 1;
|
||||
const char *workspace_name = server->workspace_current->name;
|
||||
|
||||
struct wl_array views;
|
||||
wl_array_init(&views);
|
||||
view_array_append(server, &views, rc.window_switcher.criteria);
|
||||
|
||||
float scale = output->wlr_output->scale;
|
||||
int w = theme->osd_window_switcher_width;
|
||||
int h = wl_array_len(&views) * rc.theme->osd_window_switcher_item_height
|
||||
int h = wl_array_len(views) * rc.theme->osd_window_switcher_item_height
|
||||
+ 2 * rc.theme->osd_border_width
|
||||
+ 2 * rc.theme->osd_window_switcher_padding;
|
||||
if (show_workspace) {
|
||||
|
|
@ -430,8 +426,7 @@ display_osd(struct output *output)
|
|||
|
||||
/* Render OSD image */
|
||||
cairo_t *cairo = output->osd_buffer->cairo;
|
||||
render_osd(server, cairo, w, h, show_workspace, workspace_name, &views);
|
||||
wl_array_release(&views);
|
||||
render_osd(server, cairo, w, h, show_workspace, workspace_name, views);
|
||||
|
||||
struct wlr_scene_buffer *scene_buffer = wlr_scene_buffer_create(
|
||||
output->osd_tree, &output->osd_buffer->base);
|
||||
|
|
@ -452,23 +447,16 @@ display_osd(struct output *output)
|
|||
cursor_update_focus(server);
|
||||
}
|
||||
|
||||
static int
|
||||
nr_entries(struct server *server)
|
||||
void
|
||||
osd_update(struct server *server)
|
||||
{
|
||||
struct wl_array views;
|
||||
wl_array_init(&views);
|
||||
view_array_append(server, &views, rc.window_switcher.criteria);
|
||||
int count = wl_array_len(&views);
|
||||
wl_array_release(&views);
|
||||
return count;
|
||||
}
|
||||
|
||||
void
|
||||
osd_update(struct server *server)
|
||||
{
|
||||
if (!nr_entries(server) || !server->osd_state.cycle_view) {
|
||||
if (!wl_array_len(&views) || !server->osd_state.cycle_view) {
|
||||
osd_finish(server);
|
||||
return;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (rc.window_switcher.show && rc.theme->osd_window_switcher_width > 0) {
|
||||
|
|
@ -477,7 +465,7 @@ osd_update(struct server *server)
|
|||
wl_list_for_each(output, &server->outputs, link) {
|
||||
destroy_osd_nodes(output);
|
||||
if (output_is_usable(output)) {
|
||||
display_osd(output);
|
||||
display_osd(output, &views);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -492,4 +480,6 @@ osd_update(struct server *server)
|
|||
if (rc.window_switcher.preview) {
|
||||
preview_cycled_view(server->osd_state.cycle_view);
|
||||
}
|
||||
out:
|
||||
wl_array_release(&views);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue