mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-06 03:50:14 +01:00
xwayland: Check for pointer in xwl_seat_leave_ptr()
Since commit792758fa("xwayland: Update lost focus on deactivation"), in rootful mode, if we receive an "activated" state from xdg-shell indicating that the surface is no longer active, we shall end up calling xwl_seat_leave_ptr(). But xwl_seat_leave_ptr() does not actually check whether the seat has pointer capabilities, and if not, get_pointer_device() will return NULL. As a result, we would crash using a NULL pointer in GetMaster(). This typically can happen when using Xwayland rootful on headless compositors such as "cage" which do not advertise any capabilities for the seat. To avoid the issue, simply check whether get_pointer_device() returns a valid non-null device and bail out early otherwise. Fixes:792758fa- xwayland: Update lost focus on deactivation Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1700 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> (cherry picked from commit7203626173) Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1592>
This commit is contained in:
parent
38060228c1
commit
8130fa083c
1 changed files with 3 additions and 0 deletions
|
|
@ -595,6 +595,9 @@ xwl_seat_leave_ptr(struct xwl_seat *xwl_seat, Bool focus_lost)
|
|||
{
|
||||
DeviceIntPtr dev = get_pointer_device(xwl_seat);
|
||||
|
||||
if (!dev)
|
||||
return;
|
||||
|
||||
if (focus_lost)
|
||||
CheckMotion(NULL, GetMaster(dev, POINTER_OR_FLOAT));
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue