xf86-video-intel: src/sna/sna_display.c

Chris Wilson ickle at kemper.freedesktop.org
Sun Jun 22 10:46:41 PDT 2014


 src/sna/sna_display.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

New commits:
commit f22ea4e821a33eccd3a9283d7ab048857008f7e8
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sun Jun 22 17:53:59 2014 +0100

    sna: Disable unused CRTC after undock events
    
    If undocking removes output (as the MST topology changes and some
    outputs then become unreachable), we may leave dangling CRTC. This
    confuses us, so disable any enabled but unconnected CRTC after the
    undock event.
    
    Reported-by: Sree Harsha Totakura <freedesktop at h.totakura.in>
    References: https://bugs.freedesktop.org/show_bug.cgi?id=80355#c5
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 0cee970..e7dd3d8 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3506,6 +3506,7 @@ static void sna_output_del(xf86OutputPtr output)
 	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
 	int i;
 
+	DBG(("%s(%s)\n", __FUNCTION__, output->name));
 	assert(to_sna_output(output));
 
 	RROutputDestroy(output->randr_output);
@@ -3549,7 +3550,7 @@ void sna_mode_discover(struct sna *sna)
 	struct drm_mode_card_res res;
 	uint32_t connectors[32];
 	int i, j, serial;
-	bool changed = false;
+	int changed = 0;
 
 	VG_CLEAR(connectors);
 
@@ -3589,7 +3590,7 @@ void sna_mode_discover(struct sna *sna)
 				to_sna_output(output)->id = 0;
 				output->crtc = NULL;
 			}
-			changed = true;
+			changed |= 2;
 		}
 	}
 
@@ -3598,6 +3599,10 @@ void sna_mode_discover(struct sna *sna)
 
 		/* Reorder user visible listing */
 		sort_randr_outputs(sna, screen);
+
+		if (changed & 2)
+			xf86DisableUnusedFunctions(sna->scrn);
+
 		xf86RandR12TellChanged(screen);
 	}
 }


More information about the xorg-commit mailing list