summaryrefslogtreecommitdiffstats
path: root/recipes-graphics/wayland/weston/0007-xwayland-Fix-crash-when-run-with-no-input-device.patch
blob: 1304cef22e68433c55da49aa11104b12c954b6a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
From 60f8817f371123b9c36b3ff1120eec1e8f9e3d10 Mon Sep 17 00:00:00 2001
From: Tom Hochstein <tom.hochstein@nxp.com>
Date: Mon, 31 Oct 2016 19:21:58 -0500
Subject: [PATCH weston] xwayland: Fix crash when run with no input device

Starting an xterm with no input device led to a crash
because weston_wm_pick_seat() was returning garbage and
weston_wm_selection_init() was trying to use the garbage.

Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
---
 xwayland/selection.c      | 10 +++++++---
 xwayland/window-manager.c |  6 ++++--
 2 files changed, 11 insertions(+), 5 deletions(-)

Index: weston-1.11.0/xwayland/selection.c
===================================================================
--- weston-1.11.0.orig/xwayland/selection.c	2016-05-19 16:36:04.000000000 -0500
+++ weston-1.11.0/xwayland/selection.c	2016-11-01 14:32:48.000000000 -0500
@@ -708,6 +708,8 @@
 					  wm->atom.clipboard, mask);
 
 	seat = weston_wm_pick_seat(wm);
+	if (seat != NULL)
+		return;
 	wm->selection_listener.notify = weston_wm_set_selection;
 	wl_signal_add(&seat->selection_signal, &wm->selection_listener);
 
Index: weston-1.11.0/xwayland/window-manager.c
===================================================================
--- weston-1.11.0.orig/xwayland/window-manager.c	2016-05-19 16:36:04.000000000 -0500
+++ weston-1.11.0/xwayland/window-manager.c	2016-11-01 11:47:14.549606964 -0500
@@ -1303,8 +1303,10 @@
 struct weston_seat *
 weston_wm_pick_seat(struct weston_wm *wm)
 {
-	return container_of(wm->server->compositor->seat_list.next,
-			    struct weston_seat, link);
+	struct wl_list *seats = wm->server->compositor->seat_list.next;
+	if (wl_list_empty(seats))
+		return NULL;
+	return container_of(seats, struct weston_seat, link);
 }
 
 static struct weston_seat *