From db1326cd6625747e4036e6cdc75bc7a0e1b0426b Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Thu, 26 Jan 2017 18:13:53 +0800 Subject: present: disable page flip only when a slave crtc is active MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This prevents the tearing of moving window in a composite WM desktop when output slave is attached but none of its crtc is really active. [1.19: Also fix DMX_LIBS= in configure.ac so it still links - ajax] Signed-off-by: Qiang Yu Reviewed-by: Michel Dänzer (cherry picked from commit bb9128fdc86decd6f6e3b0e145011a8c08b1d2b5) --- present/present.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'present') diff --git a/present/present.c b/present/present.c index ef8904537..c9c68dcba 100644 --- a/present/present.c +++ b/present/present.c @@ -117,6 +117,18 @@ present_flip_pending_pixmap(ScreenPtr screen) return screen_priv->flip_pending->pixmap; } +static Bool +present_check_output_slaves_active(ScreenPtr pScreen) +{ + ScreenPtr pSlave; + + xorg_list_for_each_entry(pSlave, &pScreen->slave_list, slave_head) { + if (RRHasScanoutPixmap(pSlave)) + return TRUE; + } + return FALSE; +} + static Bool present_check_flip(RRCrtcPtr crtc, WindowPtr window, @@ -145,7 +157,7 @@ present_check_flip(RRCrtcPtr crtc, return FALSE; /* Fail to flip if we have slave outputs */ - if (screen->output_slaves) + if (screen->output_slaves && present_check_output_slaves_active(screen)) return FALSE; /* Make sure the window hasn't been redirected with Composite */ -- cgit v1.2.3