From f3c0939a0cbb93c367ece3d41dc69824f585af42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Thu, 10 Jan 2019 17:00:12 +0100 Subject: [PATCH 1/2] Only call drmmode_uevent_init if RandR is enabled There's no point in listening for hotplug events if RandR is disabled, as there's no other mechanism for them to be propagated. We were already mostly ignoring them in that case. Inspired by https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/commit/1a489142c8e6a4828348cc9afbd0f430d3b1e2d8 (via https://bugs.freedesktop.org/109230#c11). (Ported from radeon commit 38db1bbcfc019c92884c7819a6630c70e543f6b2) Reviewed-by: Alex Deucher --- src/amdgpu_kms.c | 4 ++-- src/drmmode_display.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c index 4cd46f2..47e2170 100644 --- a/src/amdgpu_kms.c +++ b/src/amdgpu_kms.c @@ -318,13 +318,13 @@ static Bool AMDGPUCreateScreenResources_KMS(ScreenPtr pScreen) RROutputChanged(rrScrPriv->primaryOutput, FALSE); rrScrPriv->layoutChanged = TRUE; } + + drmmode_uevent_init(pScrn, &info->drmmode); } if (!drmmode_set_desired_modes(pScrn, &info->drmmode, pScreen->isGPU)) return FALSE; - drmmode_uevent_init(pScrn, &info->drmmode); - if (info->shadow_fb) { pixmap = pScreen->GetScreenPixmap(pScreen); diff --git a/src/drmmode_display.c b/src/drmmode_display.c index fdadf89..85a0270 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -3907,7 +3907,7 @@ restart_destroy: /* Check to see if a lessee has disappeared */ drmmode_validate_leases(scrn); - if (changed && dixPrivateKeyRegistered(rrPrivKey)) { + if (changed) { #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,14,99,2,0) RRSetChanged(xf86ScrnToScreen(scrn)); #else -- GitLab From 2058c4c469b172d4a3b0443f75466d84281a64c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Thu, 10 Jan 2019 17:03:04 +0100 Subject: [PATCH 2/2] Only call drmmode_validate_leases if RandR is enabled It would crash if RandR is disabled, e.g. because Xinerama is enabled. Bugzilla: https://bugs.freedesktop.org/109230 (Ported from radeon commit b1c01698f577577e4a88bad0ae08fb5d998e7ebb) Reviewed-by: Alex Deucher --- src/drmmode_display.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 85a0270..aea53ad 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -3710,7 +3710,8 @@ Bool drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode, } /* Validate leases on VT re-entry */ - drmmode_validate_leases(pScrn); + if (dixPrivateKeyRegistered(rrPrivKey)) + drmmode_validate_leases(pScrn); return TRUE; } -- GitLab