From d6cd79c342495738fc23fbfbf19a01e73cdc42dc Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 17 Aug 2018 19:48:34 +1000 Subject: Implement iterators per container type This introduces the following `for_each` functions: * root_for_each_workspace * root_for_each_container * output_for_each_workspace * output_for_each_container * workspace_for_each_container And introduces the following `find` functions: * root_find_output * root_find_workspace * root_find_container * output_find_workspace * output_find_container * workspace_find_container * container_find_child And removes the following functions: * container_descendants * container_for_each_descendant * container_find This change is preparing the way for demoting sway_container. Eventually these functions will accept and return sway_outputs, sway_workspaces and sway_containers (meaning a C_CONTAINER or C_VIEW). This change also makes it easy to handle abnormalities like the workspace floating list, root's scratchpad list and (once implemented) root's saved workspaces list for when there's no connected outputs. --- sway/desktop/output.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'sway/desktop') diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 66747a3f..43ed9793 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -303,15 +303,14 @@ struct send_frame_done_data { static void send_frame_done_container_iterator(struct sway_container *con, void *_data) { - struct send_frame_done_data *data = _data; - if (!sway_assert(con->type == C_VIEW, "expected a view")) { + if (con->type != C_VIEW) { return; } - if (!view_is_visible(con->sway_view)) { return; } + struct send_frame_done_data *data = _data; output_view_for_each_surface(data->output, con->sway_view, send_frame_done_iterator, data->when); } @@ -322,8 +321,8 @@ static void send_frame_done_container(struct sway_output *output, .output = output, .when = when, }; - container_descendants(con, C_VIEW, - send_frame_done_container_iterator, &data); + output_for_each_container(output->swayc, + send_frame_done_container_iterator, &data); } static void send_frame_done(struct sway_output *output, struct timespec *when) { -- cgit v1.2.3