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,
|
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) {
|
||||||
|
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;
|
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;
|
||||||
|
|
|
@ -288,7 +288,9 @@ static void handle_surface_committed(struct wlr_surface *wlr_surface,
|
||||||
surface->added = true;
|
surface->added = true;
|
||||||
wlr_signal_emit_safe(&surface->shell->events.new_surface,
|
wlr_signal_emit_safe(&surface->shell->events.new_surface,
|
||||||
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) &&
|
if (surface->configured && wlr_surface_has_buffer(surface->surface) &&
|
||||||
!surface->mapped) {
|
!surface->mapped) {
|
||||||
|
|
Loading…
Reference in New Issue