1*4882a593SmuzhiyunFrom 0464abb571f35d7086222b007dd5f1a2303b2f32 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Tue, 12 Jul 2022 12:29:57 +0800
4*4882a593SmuzhiyunSubject: [PATCH 05/10] xdg-shell{,-v6}: Fix crash when unbind early
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
7*4882a593Smuzhiyun---
8*4882a593Smuzhiyun src/modules/wl_desktop_shell/xdg.c  | 7 +++++--
9*4882a593Smuzhiyun src/modules/wl_desktop_shell/xdg6.c | 7 +++++--
10*4882a593Smuzhiyun 2 files changed, 10 insertions(+), 4 deletions(-)
11*4882a593Smuzhiyun
12*4882a593Smuzhiyundiff --git a/src/modules/wl_desktop_shell/xdg.c b/src/modules/wl_desktop_shell/xdg.c
13*4882a593Smuzhiyunindex 4892eaa70..0f8c973ec 100644
14*4882a593Smuzhiyun--- a/src/modules/wl_desktop_shell/xdg.c
15*4882a593Smuzhiyun+++ b/src/modules/wl_desktop_shell/xdg.c
16*4882a593Smuzhiyun@@ -1454,8 +1454,11 @@ _xdg_client_destroy(E_Client *ec, Eina_Bool do_list)
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun         client = wl_resource_get_client(ec->comp_data->surface);
19*4882a593Smuzhiyun         res = eina_hash_find(xdg_shell_resources, &client);
20*4882a593Smuzhiyun-        v = wl_resource_get_user_data(res);
21*4882a593Smuzhiyun-        v->surfaces = eina_list_remove(v->surfaces, shd->surface);
22*4882a593Smuzhiyun+        if (res)
23*4882a593Smuzhiyun+          {
24*4882a593Smuzhiyun+             v = wl_resource_get_user_data(res);
25*4882a593Smuzhiyun+             v->surfaces = eina_list_remove(v->surfaces, shd->surface);
26*4882a593Smuzhiyun+          }
27*4882a593Smuzhiyun      }
28*4882a593Smuzhiyun    if (ec->comp_data->shell.surface)
29*4882a593Smuzhiyun      e_shell_surface_destroy(ec->comp_data->shell.surface);
30*4882a593Smuzhiyundiff --git a/src/modules/wl_desktop_shell/xdg6.c b/src/modules/wl_desktop_shell/xdg6.c
31*4882a593Smuzhiyunindex ce236023e..a4a85251c 100644
32*4882a593Smuzhiyun--- a/src/modules/wl_desktop_shell/xdg6.c
33*4882a593Smuzhiyun+++ b/src/modules/wl_desktop_shell/xdg6.c
34*4882a593Smuzhiyun@@ -1429,8 +1429,11 @@ _xdg6_client_destroy(E_Client *ec, Eina_Bool do_list)
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun         client = wl_resource_get_client(ec->comp_data->surface);
37*4882a593Smuzhiyun         res = eina_hash_find(xdg_shell_resources, &client);
38*4882a593Smuzhiyun-        v = wl_resource_get_user_data(res);
39*4882a593Smuzhiyun-        v->surfaces = eina_list_remove(v->surfaces, shd->surface);
40*4882a593Smuzhiyun+        if (res)
41*4882a593Smuzhiyun+          {
42*4882a593Smuzhiyun+             v = wl_resource_get_user_data(res);
43*4882a593Smuzhiyun+             v->surfaces = eina_list_remove(v->surfaces, shd->surface);
44*4882a593Smuzhiyun+          }
45*4882a593Smuzhiyun      }
46*4882a593Smuzhiyun    if (ec->comp_data->shell.surface)
47*4882a593Smuzhiyun      e_shell_surface_destroy(ec->comp_data->shell.surface);
48*4882a593Smuzhiyun--
49*4882a593Smuzhiyun2.20.1
50*4882a593Smuzhiyun
51