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:
Ander Conselvan de Oliveira 2013-07-05 16:05:26 +03:00 committed by Kristian Høgsberg
parent c1ae40222c
commit 3c36bf3486
1 changed files with 6 additions and 0 deletions

View File

@ -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