aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-07-26 07:46:15 +0200
committermarha <marha@users.sourceforge.net>2013-07-26 07:46:15 +0200
commitec34243fae167734bfa5ba81278763af7db0fb2b (patch)
tree759fdfbe8376d8ba3a9dd82d33df9d2735e2fbc9 /xorg-server/hw
parent1ba15549ff13d0bfcf4e82c6005d3cc40f2bf098 (diff)
parent8647aa1a5029fcd96f134103331ddf3c21bc0a0b (diff)
downloadvcxsrv-ec34243fae167734bfa5ba81278763af7db0fb2b.tar.gz
vcxsrv-ec34243fae167734bfa5ba81278763af7db0fb2b.tar.bz2
vcxsrv-ec34243fae167734bfa5ba81278763af7db0fb2b.zip
Merge remote-tracking branch 'origin/released'
* origin/released: xserver mesa git update 26 Jul 2013
Diffstat (limited to 'xorg-server/hw')
-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);
}