Use noop output when there's no outputs connected

Instead of having NULL workspace->output pointers, use a noop output.
This should be safer.
This commit is contained in:
Ryan Dwyer 2019-01-17 20:16:23 +10:00 committed by emersion
parent ab0248a545
commit 2301349ad5
8 changed files with 29 additions and 28 deletions

View file

@ -57,12 +57,12 @@ static void restore_workspaces(struct sway_output *output) {
}
// Saved workspaces
for (int i = 0; i < root->saved_workspaces->length; ++i) {
struct sway_workspace *ws = root->saved_workspaces->items[i];
while (root->noop_output->workspaces->length) {
struct sway_workspace *ws = root->noop_output->workspaces->items[0];
workspace_detach(ws);
output_add_workspace(output, ws);
ipc_event_workspace(NULL, ws, "move");
}
root->saved_workspaces->length = 0;
output_sort_workspaces(output);
}
@ -177,6 +177,9 @@ static void output_evacuate(struct sway_output *output) {
if (!new_output) {
new_output = fallback_output;
}
if (!new_output) {
new_output = root->noop_output;
}
if (workspace_is_empty(workspace)) {
// If floating is not empty, there are sticky containers to move
@ -187,14 +190,10 @@ static void output_evacuate(struct sway_output *output) {
continue;
}
if (new_output) {
workspace_output_add_priority(workspace, new_output);
output_add_workspace(new_output, workspace);
output_sort_workspaces(new_output);
ipc_event_workspace(NULL, workspace, "move");
} else {
list_add(root->saved_workspaces, workspace);
}
workspace_output_add_priority(workspace, new_output);
output_add_workspace(new_output, workspace);
output_sort_workspaces(new_output);
ipc_event_workspace(NULL, workspace, "move");
}
}