layer-shell: Fix crash when cursor is intially outside any output
On the X11 backend the cursor position might be outside the output window so no output is returned leading to the assert to trigger. Use sane fallback instead of crashing.
This commit is contained in:
parent
a6790d45b2
commit
b1bd0e2557
|
@ -395,8 +395,18 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
|
||||||
wlr_output_layout_output_at(desktop->layout,
|
wlr_output_layout_output_at(desktop->layout,
|
||||||
seat->cursor->cursor->x,
|
seat->cursor->cursor->x,
|
||||||
seat->cursor->cursor->y);
|
seat->cursor->cursor->y);
|
||||||
assert(output); // And this one
|
if (!output) {
|
||||||
layer_surface->output = output;
|
wlr_log(L_ERROR, "Couldn't find output at (%.0f,%.0f)",
|
||||||
|
seat->cursor->cursor->x,
|
||||||
|
seat->cursor->cursor->y);
|
||||||
|
output = wlr_output_layout_get_center_output(desktop->layout);
|
||||||
|
}
|
||||||
|
if (output) {
|
||||||
|
layer_surface->output = output;
|
||||||
|
} else {
|
||||||
|
wlr_layer_surface_close(layer_surface);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
roots_surface->surface_commit.notify = handle_surface_commit;
|
roots_surface->surface_commit.notify = handle_surface_commit;
|
||||||
|
|
Loading…
Reference in New Issue