Merge pull request #890 from agx/layer-shell-empty-output-crash
layer-shell: Fix crash when cursor is intially outside any output
This commit is contained in:
commit
93ebd33aa8
|
@ -395,8 +395,18 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
|
|||
wlr_output_layout_output_at(desktop->layout,
|
||||
seat->cursor->cursor->x,
|
||||
seat->cursor->cursor->y);
|
||||
assert(output); // And this one
|
||||
if (!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;
|
||||
|
|
|
@ -288,7 +288,9 @@ static void handle_surface_committed(struct wlr_surface *wlr_surface,
|
|||
surface->added = true;
|
||||
wlr_signal_emit_safe(&surface->shell->events.new_surface,
|
||||
surface);
|
||||
assert(surface->output);
|
||||
// either the compositor found a suitable output or it must
|
||||
// have closed the surface
|
||||
assert(surface->output || surface->closed);
|
||||
}
|
||||
if (surface->configured && wlr_surface_has_buffer(surface->surface) &&
|
||||
!surface->mapped) {
|
||||
|
|
Loading…
Reference in New Issue