From 451ba4bd41b82acd4aec6236ba121e00cfeb311b Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 10 Jan 2013 03:26:33 +0000 Subject: [PATCH] hw/xfree86: Only report SetDesiredModes() failed if at least one modeset fails commit 6703a7c7cf1a349c137e247a0c8eb462ff7b07be Author: Keith Packard Date: Tue Jan 8 20:24:32 2013 -0800 hw/xfree86: Require only one working CRTC to start the server. changed the logic to try to set the mode on all connected outputs rather than abort upon the first failure. The return error code was then tweaked such that it reported success if it set a mode on any crtc. However, this confuses the headless case where we never enable any crtcs and also, importantly, never fail to set a crtc. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59190 Signed-off-by: Chris Wilson Also-written-by: Maarten Lankhorst Reviewed-by: Keith Packard Signed-off-by: Keith Packard --- hw/xfree86/modes/xf86Crtc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index e4b393c..d64f6bd 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -2687,8 +2687,8 @@ xf86SetDesiredModes(ScrnInfoPtr scrn) { xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); xf86CrtcPtr crtc = config->crtc[0]; + int enabled = 0, failed = 0; int c; - int enabled = 0; /* A driver with this hook will take care of this */ if (!crtc->funcs->set_mode_major) { @@ -2748,11 +2748,12 @@ xf86SetDesiredModes(ScrnInfoPtr scrn) if (config->output[o]->crtc == crtc) config->output[o]->crtc = NULL; crtc->enabled = FALSE; + ++failed; } } xf86DisableUnusedFunctions(scrn); - return enabled != 0; + return enabled != 0 || failed == 0; } /** -- 2.7.4