compositor: Remove a plane from the compositor list when releasing it
Weston would crash when hot plugging/unplugging outputs using the DRM backend due to a corrupted plane list. https://bugs.freedesktop.org/show_bug.cgi?id=66530 https://bugs.freedesktop.org/show_bug.cgi?id=66529
This commit is contained in:
parent
c1ae40222c
commit
3c36bf3486
|
@ -2498,6 +2498,10 @@ weston_plane_init(struct weston_plane *plane, int32_t x, int32_t y)
|
||||||
pixman_region32_init(&plane->clip);
|
pixman_region32_init(&plane->clip);
|
||||||
plane->x = x;
|
plane->x = x;
|
||||||
plane->y = y;
|
plane->y = y;
|
||||||
|
|
||||||
|
/* Init the link so that the call to wl_list_remove() when releasing
|
||||||
|
* the plane without ever stacking doesn't lead to a crash */
|
||||||
|
wl_list_init(&plane->link);
|
||||||
}
|
}
|
||||||
|
|
||||||
WL_EXPORT void
|
WL_EXPORT void
|
||||||
|
@ -2505,6 +2509,8 @@ weston_plane_release(struct weston_plane *plane)
|
||||||
{
|
{
|
||||||
pixman_region32_fini(&plane->damage);
|
pixman_region32_fini(&plane->damage);
|
||||||
pixman_region32_fini(&plane->clip);
|
pixman_region32_fini(&plane->clip);
|
||||||
|
|
||||||
|
wl_list_remove(&plane->link);
|
||||||
}
|
}
|
||||||
|
|
||||||
WL_EXPORT void
|
WL_EXPORT void
|
||||||
|
|
Loading…
Reference in New Issue