mirror of
https://gitlab.freedesktop.org/wayland/weston
synced 2024-09-30 14:11:31 +00:00
input: Fix a segfault in focus checking
Without this, weston will segfault whenever the focus is a non-client surface such as the black surface in fullscreen.
This commit is contained in:
parent
895b1fdcb2
commit
42133d47d3
|
@ -335,7 +335,8 @@ default_grab_keyboard_modifiers(struct weston_keyboard_grab *grab,
|
|||
wl_keyboard_send_modifiers(resource, serial, mods_depressed,
|
||||
mods_latched, mods_locked, group);
|
||||
}
|
||||
if (pointer && pointer->focus && pointer->focus->surface != keyboard->focus) {
|
||||
if (pointer && pointer->focus && pointer->focus->surface->resource &&
|
||||
pointer->focus->surface != keyboard->focus) {
|
||||
struct wl_client *pointer_client =
|
||||
wl_resource_get_client(pointer->focus->surface->resource);
|
||||
send_modifiers_to_client_in_list(pointer_client,
|
||||
|
@ -1504,11 +1505,13 @@ should_send_modifiers_to_client(struct weston_seat *seat,
|
|||
{
|
||||
if (seat->keyboard &&
|
||||
seat->keyboard->focus &&
|
||||
seat->keyboard->focus->resource &&
|
||||
wl_resource_get_client(seat->keyboard->focus->resource) == client)
|
||||
return 1;
|
||||
|
||||
if (seat->pointer &&
|
||||
seat->pointer->focus &&
|
||||
seat->pointer->focus->surface->resource &&
|
||||
wl_resource_get_client(seat->pointer->focus->surface->resource) == client)
|
||||
return 1;
|
||||
|
||||
|
|
Loading…
Reference in a new issue