diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index b3b84cc13..21daf9a01 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -552,6 +552,16 @@ xf86OutputSetMonitor(xf86OutputPtr output) "Output %s has no monitor section\n", output->name); } +Bool +xf86OutputForceEnabled(xf86OutputPtr output) +{ + Bool enable; + + if (xf86GetOptValBool(output->options, OPTION_ENABLE, &enable) && enable) + return TRUE; + return FALSE; +} + static Bool xf86OutputEnabled(xf86OutputPtr output, Bool strict) { diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h index 427c6bff4..bf3e808bc 100644 --- a/hw/xfree86/modes/xf86Crtc.h +++ b/hw/xfree86/modes/xf86Crtc.h @@ -1144,4 +1144,5 @@ xf86ProviderSetup(ScrnInfoPtr scrn, extern _X_EXPORT void xf86DetachAllCrtc(ScrnInfoPtr scrn); +Bool xf86OutputForceEnabled(xf86OutputPtr output); #endif /* _XF86CRTC_H_ */ diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index 0838dbf82..b476c07ce 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c @@ -1647,7 +1647,10 @@ xf86RandR12SetInfo12(ScreenPtr pScreen) RROutputSetConnection(output->randr_output, RR_Connected); break; case XF86OutputStatusDisconnected: - RROutputSetConnection(output->randr_output, RR_Disconnected); + if (xf86OutputForceEnabled(output)) + RROutputSetConnection(output->randr_output, RR_Connected); + else + RROutputSetConnection(output->randr_output, RR_Disconnected); break; case XF86OutputStatusUnknown: RROutputSetConnection(output->randr_output, RR_UnknownConnection);