diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2015-11-05 16:54:36 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2015-11-05 16:54:36 +0000 |
commit | af680486608686ade375f5737bff556343366230 (patch) | |
tree | 58ed755a80efd3f0fcbec20732f715e12e1ef808 | |
parent | 627ef68a8cd7a51627d5b6a98cb0a5bdb1d9b534 (diff) |
sna/dri2: Update TearFree recursion prevention
Some time past, we switched to a seperate boolean to mark when the
shadow is no longer accessible due to recursion - but I missed an
important check inside the vblank handler.
Reported-by: Joe Peterson <joe@wildlava.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92751#c5
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/sna/sna_dri2.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c index bff6516c..1fad39ff 100644 --- a/src/sna/sna_dri2.c +++ b/src/sna/sna_dri2.c @@ -2465,7 +2465,7 @@ static void chain_swap(struct sna_dri2_event *chain) case SWAP_COMPLETE: DBG(("%s: emitting chained vsync'ed blit\n", __FUNCTION__)); if (chain->sna->mode.shadow && - !chain->sna->mode.shadow_damage) { + !chain->sna->mode.shadow_enabled) { /* recursed from wait_for_shadow(), simply requeue */ DBG(("%s -- recursed from wait_for_shadow(), requeuing\n", __FUNCTION__)); if (sna_next_vblank(chain)) @@ -2562,7 +2562,7 @@ void sna_dri2_vblank_handler(struct drm_event_vblank *event) /* else fall through to blit */ case SWAP: assert(info->signal); - if (sna->mode.shadow && !sna->mode.shadow_damage) { + if (sna->mode.shadow && !sna->mode.shadow_enabled) { /* recursed from wait_for_shadow(), simply requeue */ DBG(("%s -- recursed from wait_for_shadow(), requeuing\n", __FUNCTION__)); } else if (can_xchg(info->sna, draw, info->front, info->back)) { |