On Tue, 26 Sep 2017 18:15:37 +0100 Daniel Stone <dani...@collabora.com> wrote:
> Change the type of cursor_plane from a weston_plane (base tracking > structure) to a drm_plane (wrapper containing additional DRM-specific > details), and make it a dynamically-allocated pointer. > > Using the standard drm_plane allows us to reuse code which already deals > with drm_planes, e.g. a common cleanup function. > > This patch introduces a 'special plane' helper, creating a drm_plane > either from a real KMS plane when using universal planes, or a fake plane > otherwise. Without universal planes, the cursor and primary planes are > hidden from us; this helper allows us to pretend otherwise. > > Signed-off-by: Daniel Stone <dani...@collabora.com> > --- > libweston/compositor-drm.c | 423 > ++++++++++++++++++++++++++++++++++----------- > 1 file changed, 322 insertions(+), 101 deletions(-) > Hi, test scenario: start with two outputs plugged in. Unplug one output. Re-plug the output. With this patch, the re-plug eventually causes compositor_accumulate_damage() to enter an endless loop. It looks like weston_compositor::plane_list could be corrupted. Using WESTON_DISABLE_UNIVERSAL_PLANES=1, the problem does not appear. I was originally bisecting a different failure triggered by the re-plug: weston: /home/pq/git/weston/libweston/compositor-drm.c:2357: drm_output_start_repaint_loop: Assertion `scanout_plane->state_cur->output == output' failed. That happens at patch "compositor-drm: Atomic modesetting support". Somewhere between that and this patch the behaviour changes from endless loop to an assert fail. Thanks, pq
pgpW9mVIS8IsX.pgp
Description: OpenPGP digital signature
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel