mirror of
https://github.com/swaywm/sway.git
synced 2024-11-22 07:51:28 +00:00
fix: sway crashes if switch to another workspace with surface when IME popup is shown
in pr https://github.com/swaywm/sway/pull/8196, when im_popup_surface is unmapped, author set the popup->relative to NULL, butt popup is still in popup groups, where assert the relative is not NULL, this cause the panic
Take the suggestion of Nefsen402, remove the line where set relative to
NULL, and add NULL check in scene_descriptor_destory
(cherry picked from commit f855b0898b
)
This commit is contained in:
parent
63005491cf
commit
91be6e8a09
|
@ -454,6 +454,7 @@ static void handle_im_popup_surface_unmap(struct wl_listener *listener, void *da
|
|||
struct sway_input_popup *popup =
|
||||
wl_container_of(listener, popup, popup_surface_unmap);
|
||||
|
||||
scene_descriptor_destroy(&popup->scene_tree->node, SWAY_SCENE_DESC_POPUP);
|
||||
// relative should already be freed as it should be a child of the just unmapped scene
|
||||
popup->desc.relative = NULL;
|
||||
|
||||
|
|
|
@ -39,6 +39,9 @@ void *scene_descriptor_try_get(struct wlr_scene_node *node,
|
|||
void scene_descriptor_destroy(struct wlr_scene_node *node,
|
||||
enum sway_scene_descriptor_type type) {
|
||||
struct scene_descriptor *desc = scene_node_get_descriptor(node, type);
|
||||
if (!desc) {
|
||||
return;
|
||||
}
|
||||
descriptor_destroy(desc);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue