[PATCH weston v2] tests: fix the cursor race in internal-screenshot
ppaalanen at gmail.com
Thu Jun 23 15:09:39 UTC 2016
On Thu, 23 Jun 2016 09:45:56 -0500
Derek Foreman <derekf at osg.samsung.com> wrote:
> On 23/06/16 07:17 AM, Pekka Paalanen wrote:
> > From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> > This fix also depends on "compositor-headless: do not create a seat".
> > If we lose the race against weston-desktop-shell setting cursors, which
> > is very rare, we get a cursor image in the screenshot, causing the test
> > to fail. This is now fixed by moving the (remaining) cursor out of the
> > way.
> > Arguably we should have better solutions for this, but that is another
> > story. This is a stop-gap measure we can copy also in new
> > screenshooting tests.
> > v2: Remove the example code for how to trigger the race, and rewrite the
> > big comment.
> > Cc: Derek Foreman <derekf at osg.samsung.com>
> > Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> I find this exceptionally clear, thanks!
> Reviewed-by: Derek Foreman <derekf at osg.samsung.com>
a1046ad..e651bb0 master -> master
> > ---
> > tests/internal-screenshot-test.c | 18 ++++++++++++++++++
> > 1 file changed, 18 insertions(+)
> > diff --git a/tests/internal-screenshot-test.c b/tests/internal-screenshot-test.c
> > index 563aa3d..0b2cb1e 100644
> > --- a/tests/internal-screenshot-test.c
> > +++ b/tests/internal-screenshot-test.c
> > @@ -68,6 +68,24 @@ TEST(internal_screenshot)
> > assert(client);
> > surface = client->surface->wl_surface;
> > + /*
> > + * We are racing our screenshooting against weston-desktop-shell
> > + * setting the cursor. If w-d-s wins, our screenshot will have a cursor
> > + * shown, which makes the image comparison fail. Our window and the
> > + * default pointer position are accidentally causing an overlap that
> > + * intersects our test clip rectangle.
> > + *
> > + * w-d-s wins very rarely though, so the race is easy to miss. You can
> > + * make it happen by putting a delay before the call to
> > + * create_client_and_test_surface().
> > + *
> > + * The weston_test_move_pointer() below makes the race irrelevant, as
> > + * the cursor won't overlap with anything we care about.
> > + */
> > +
> > + /* Move the pointer away from the screenshot area. */
> > + weston_test_move_pointer(client->test->weston_test, 0, 0);
> > +
> > buf = create_shm_buffer(client, 100, 100, &pixels);
> > draw_stuff(pixels, 100, 100);
> > wl_surface_attach(surface, buf, 0, 0);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 811 bytes
Desc: OpenPGP digital signature
More information about the wayland-devel