Tests that check frontbuffer contents after drawing may fail because the X server touch the front contents between drawing and checking. In those cases, there's typically a pending expose event. So check for that situation and optionally rerun the test.
Signed-off-by: Thomas Hellstrom <thellst...@vmware.com> --- tests/util/piglit-glx-util.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/util/piglit-glx-util.c b/tests/util/piglit-glx-util.c index 95e33ae..85f7eef 100644 --- a/tests/util/piglit-glx-util.c +++ b/tests/util/piglit-glx-util.c @@ -212,6 +212,20 @@ piglit_glx_event_loop(Display *dpy, enum piglit_result (*draw)(Display *dpy)) enum piglit_result result = draw(dpy); if (piglit_automatic) { + /* + * Rerun if we have failed and have a + * pending expose event, which might be an + * indication of invalid front buffer + * contents. + */ + if (result == PIGLIT_FAIL && + XCheckTypedEvent(dpy, Expose, &event)) { + fprintf(stderr, + "Pending expose event- " + "rerunning.\n"); + XPutBackEvent(dpy, &event); + continue; + } XCloseDisplay(dpy); piglit_report_result(result); break; -- 2.7.4 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit