summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2016-09-14 17:17:39 +0900
committerMichel Dänzer <michel@daenzer.net>2016-09-14 17:26:35 +0900
commit2e6e81aa8d4b33eb326e674dca4e29b3d638cac0 (patch)
treeb64a160b2e7ee93ced2049c4801e296ddf43b5db /src
parent01565e4427b192c7c55a820f1fb762e852859903 (diff)
Only use RandR APIs if RandR is enabled
Fixes crash with Xinerama enabled, which disables RandR. Fixes: https://bugs.debian.org/827984 (Ported from radeon commit 3be841d0ae7d505cef325993205b12d15e98dba9) Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (Cherry picked from commit b5e2b964b7884c205a7c0fa578e05e867c176fcc)
Diffstat (limited to 'src')
-rw-r--r--src/amdgpu_kms.c21
-rw-r--r--src/drmmode_display.c2
2 files changed, 13 insertions, 10 deletions
diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
index 125cb77..9c1d16a 100644
--- a/src/amdgpu_kms.c
+++ b/src/amdgpu_kms.c
@@ -167,7 +167,6 @@ static Bool AMDGPUCreateScreenResources_KMS(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
AMDGPUInfoPtr info = AMDGPUPTR(pScrn);
- rrScrPrivPtr rrScrPriv = rrGetScrPriv(pScreen);
PixmapPtr pixmap;
pScreen->CreateScreenResources = info->CreateScreenResources;
@@ -176,17 +175,21 @@ static Bool AMDGPUCreateScreenResources_KMS(ScreenPtr pScreen)
pScreen->CreateScreenResources = AMDGPUCreateScreenResources_KMS;
/* Set the RandR primary output if Xorg hasn't */
- if (
+ if (dixPrivateKeyRegistered(rrPrivKey)) {
+ rrScrPrivPtr rrScrPriv = rrGetScrPriv(pScreen);
+
+ if (
#ifdef AMDGPU_PIXMAP_SHARING
- !pScreen->isGPU &&
+ !pScreen->isGPU &&
#endif
- !rrScrPriv->primaryOutput)
- {
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ !rrScrPriv->primaryOutput)
+ {
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
- rrScrPriv->primaryOutput = xf86_config->output[0]->randr_output;
- RROutputChanged(rrScrPriv->primaryOutput, FALSE);
- rrScrPriv->layoutChanged = TRUE;
+ rrScrPriv->primaryOutput = xf86_config->output[0]->randr_output;
+ RROutputChanged(rrScrPriv->primaryOutput, FALSE);
+ rrScrPriv->layoutChanged = TRUE;
+ }
}
if (!drmmode_set_desired_modes(pScrn, &info->drmmode, pScrn->is_gpu))
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 5fc7ce5..2210606 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -2452,7 +2452,7 @@ restart_destroy:
changed = TRUE;
}
- if (changed) {
+ if (changed && dixPrivateKeyRegistered(rrPrivKey)) {
#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,14,99,2,0)
RRSetChanged(xf86ScrnToScreen(scrn));
#else