Merge pull request #2886 from RyanDwyer/fix-headless-unmap-crash

Fix crash when view unmaps while no outputs connected
This commit is contained in:
emersion 2018-10-20 08:37:48 +02:00 committed by GitHub
commit fe6aea1d02
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 3 deletions

View file

@ -89,6 +89,7 @@ void output_enable(struct sway_output *output, struct output_config *oc) {
} }
} }
free(ws_name); free(ws_name);
ipc_event_workspace(NULL, ws, "init");
} }
size_t len = sizeof(output->layers) / sizeof(output->layers[0]); size_t len = sizeof(output->layers) / sizeof(output->layers[0]);

View file

@ -119,6 +119,11 @@ void workspace_begin_destroy(struct sway_workspace *workspace) {
if (workspace->output) { if (workspace->output) {
workspace_detach(workspace); workspace_detach(workspace);
} else {
int index = list_find(root->saved_workspaces, workspace);
if (index != -1) {
list_del(root->saved_workspaces, index);
}
} }
workspace->node.destroying = true; workspace->node.destroying = true;
@ -126,10 +131,13 @@ void workspace_begin_destroy(struct sway_workspace *workspace) {
} }
void workspace_consider_destroy(struct sway_workspace *ws) { void workspace_consider_destroy(struct sway_workspace *ws) {
if (ws->tiling->length == 0 && ws->floating->length == 0 if (ws->tiling->length || ws->floating->length) {
&& output_get_active_workspace(ws->output) != ws) { return;
workspace_begin_destroy(ws);
} }
if (ws->output && output_get_active_workspace(ws->output) == ws) {
return;
}
workspace_begin_destroy(ws);
} }
char *prev_workspace_name = NULL; char *prev_workspace_name = NULL;