desktop-shell: Do not try to add a child to a non-existent parent
Introduced with a8da2084, it seems that there are cases when there's no
parent available (zenity, for instance).
Removes any potential child and re-initialize it, in case the parent is
not set. (Simon Ser)
Fixes: #340
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reported-by: n3rdopolis <bluescreenavenger@gmail.com>
This commit is contained in:
+11
-4
@@ -2769,13 +2769,20 @@ desktop_surface_set_parent(struct weston_desktop_surface *desktop_surface,
|
|||||||
struct weston_desktop_surface *parent,
|
struct weston_desktop_surface *parent,
|
||||||
void *shell)
|
void *shell)
|
||||||
{
|
{
|
||||||
|
struct shell_surface *shsurf_parent;
|
||||||
struct shell_surface *shsurf =
|
struct shell_surface *shsurf =
|
||||||
weston_desktop_surface_get_user_data(desktop_surface);
|
weston_desktop_surface_get_user_data(desktop_surface);
|
||||||
struct shell_surface *shsurf_parent =
|
|
||||||
weston_desktop_surface_get_user_data(parent);
|
|
||||||
|
|
||||||
wl_list_insert(shsurf_parent->children_list.prev,
|
/* unlink any potential child */
|
||||||
&shsurf->children_link);
|
wl_list_remove(&shsurf->children_link);
|
||||||
|
|
||||||
|
if (parent) {
|
||||||
|
shsurf_parent = weston_desktop_surface_get_user_data(parent);
|
||||||
|
wl_list_insert(shsurf_parent->children_list.prev,
|
||||||
|
&shsurf->children_link);
|
||||||
|
} else {
|
||||||
|
wl_list_init(&shsurf->children_link);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
Reference in New Issue
Block a user