aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/xfree86
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-07-26 07:45:10 +0200
committermarha <marha@users.sourceforge.net>2013-07-26 07:45:10 +0200
commit8647aa1a5029fcd96f134103331ddf3c21bc0a0b (patch)
tree419501343bcdd7e12477b1f3bbc302815752ce55 /xorg-server/hw/xfree86
parentacf3535c75d7c79154b6b89c66567317944d244c (diff)
downloadvcxsrv-8647aa1a5029fcd96f134103331ddf3c21bc0a0b.tar.gz
vcxsrv-8647aa1a5029fcd96f134103331ddf3c21bc0a0b.tar.bz2
vcxsrv-8647aa1a5029fcd96f134103331ddf3c21bc0a0b.zip
xserver mesa git update 26 Jul 2013
xserver commit bdd1e22cbde9ea2324e4e1991c9e152f22f88151 mesa commit 81a156d099b5c224d4a528b66a80e25626ed65bc
Diffstat (limited to 'xorg-server/hw/xfree86')
-rw-r--r--xorg-server/hw/xfree86/modes/xf86RandR12.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/xorg-server/hw/xfree86/modes/xf86RandR12.c b/xorg-server/hw/xfree86/modes/xf86RandR12.c
index 2817aaa1f..76614de78 100644
--- a/xorg-server/hw/xfree86/modes/xf86RandR12.c
+++ b/xorg-server/hw/xfree86/modes/xf86RandR12.c
@@ -1771,6 +1771,19 @@ xf86RandR12EnterVT(ScrnInfoPtr pScrn)
return RRGetInfo(pScreen, TRUE); /* force a re-probe of outputs and notify clients about changes */
}
+static void
+xf86DetachOutputGPU(ScreenPtr pScreen)
+{
+ rrScrPrivPtr rp = rrGetScrPriv(pScreen);
+ int i;
+
+ /* make sure there are no attached shared scanout pixmaps first */
+ for (i = 0; i < rp->numCrtcs; i++)
+ RRCrtcDetachScanoutPixmap(rp->crtcs[i]);
+
+ DetachOutputGPU(pScreen);
+}
+
static Bool
xf86RandR14ProviderSetOutputSource(ScreenPtr pScreen,
RRProviderPtr provider,
@@ -1780,7 +1793,7 @@ xf86RandR14ProviderSetOutputSource(ScreenPtr pScreen,
if (provider->output_source) {
ScreenPtr cmScreen = pScreen->current_master;
- DetachOutputGPU(pScreen);
+ xf86DetachOutputGPU(pScreen);
AttachUnboundGPU(cmScreen, pScreen);
}
provider->output_source = NULL;
@@ -1808,7 +1821,7 @@ xf86RandR14ProviderSetOffloadSink(ScreenPtr pScreen,
if (!sink_provider) {
if (provider->offload_sink) {
ScreenPtr cmScreen = pScreen->current_master;
- DetachOutputGPU(pScreen);
+ xf86DetachOutputGPU(pScreen);
AttachUnboundGPU(cmScreen, pScreen);
}
@@ -1899,7 +1912,7 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider)
RRSetChanged(screen);
}
else if (config->randr_provider->output_source) {
- DetachOutputGPU(screen);
+ xf86DetachOutputGPU(screen);
config->randr_provider->output_source = NULL;
RRSetChanged(screen);
}