[PATCH 20/36] xf86: add ability to do a role change
Dave Airlie
airlied at gmail.com
Mon Jul 2 03:13:13 PDT 2012
From: Dave Airlie <airlied at redhat.com>
This just hooks up a simple role change to go from unattached
to slave output and back.
Signed-off-by: Dave Airlie <airlied at redhat.com>
---
hw/xfree86/modes/xf86RandR12.c | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index 78cad63..5a85ed1 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -1763,7 +1763,32 @@ xf86RandR15ProviderSetRole(ScreenPtr pScreen,
RRProviderPtr provider,
uint32_t new_role)
{
- /* do nothing so far */
+ ScreenPtr master;
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+
+ master = pScreen->current_master;
+
+ assert(!master->isGPU);
+ SetRootClip(master, FALSE);
+
+ if (new_role == RR_Role_Slave_Output) {
+ if (provider->current_role == 0)
+ DetachUnboundGPU(pScreen);
+ AttachOutputGPU(master, pScreen);
+ xf86SetCurrentRole(xf86ScreenToScrn(pScreen), RR_Role_Slave_Output);
+ }
+
+ if (!new_role) {
+ if (provider->current_role == RR_Role_Slave_Output) {
+ DetachOutputGPU(pScreen);
+ xf86SetCurrentRole(xf86ScreenToScrn(pScreen), 0);
+ }
+
+ AttachUnboundGPU(master, pScreen);
+ }
+
+ RRTellChanged(master);
+ SetRootClip(master, TRUE);
return TRUE;
}
--
1.7.10.2
More information about the xorg-devel
mailing list