[PATCH] hw/xfree86: Allow xf86SetDesiredModes to succeed if no crtc's are enabled.

Maarten Lankhorst maarten.lankhorst at canonical.com
Mon Apr 29 02:25:27 PDT 2013


Fixes regression on xserver 1.14 introduced by 6703a7c7cf1a.
"hw/xfree86: Require only one working CRTC to start the server."

https://bugs.freedesktop.org/show_bug.cgi?id=62916

Without any crtc's enabled, 1.13 worked correctly, but the logic in
xf86SetDesiredModes will now return false instead. Fix this to
return success if all outputs were already disabled.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
---
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index f9ae465..eb72f0e 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -2599,7 +2599,7 @@ xf86SetDesiredModes(ScrnInfoPtr scrn)
     xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
     xf86CrtcPtr crtc = config->crtc[0];
     int c;
-    int enabled = 0;
+    int enabled = 0, failed = 0;
 
     /* A driver with this hook will take care of this */
     if (!crtc->funcs->set_mode_major) {
@@ -2659,11 +2659,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;
 }
 
 /**



More information about the xorg-devel mailing list