diff --git a/libweston/backend-drm/drm-virtual.c b/libweston/backend-drm/drm-virtual.c index cf8de76a..931cb822 100644 --- a/libweston/backend-drm/drm-virtual.c +++ b/libweston/backend-drm/drm-virtual.c @@ -81,6 +81,20 @@ drm_virtual_crtc_destroy(struct drm_crtc *crtc) free(crtc); } +static uint32_t +get_drm_plane_index_maximum(struct drm_device *device) +{ + uint32_t max = 0; + struct drm_plane *p; + + wl_list_for_each(p, &device->plane_list, link) { + if (p->plane_idx > max) + max = p->plane_idx; + } + + return max; +} + /** * Create a drm_plane for virtual output * @@ -125,6 +139,7 @@ drm_virtual_plane_create(struct drm_device *device, struct drm_output *output) goto err; weston_plane_init(&plane->base, b->compositor, 0, 0); + plane->plane_idx = get_drm_plane_index_maximum(device) + 1; wl_list_insert(&device->plane_list, &plane->link); return plane;