[PATCH xf86-video-ati] Only use RandR APIs if RandR is enabled

Alex Deucher alexdeucher at gmail.com
Mon Jun 27 16:05:50 UTC 2016


On Sun, Jun 26, 2016 at 10:19 PM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> Fixes crash with Xinerama enabled, which disables RandR.
>
> Fixes: https://bugs.debian.org/827984
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  src/drmmode_display.c |  2 +-
>  src/radeon_kms.c      | 21 ++++++++++++---------
>  2 files changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index b5d3dc9..2555465 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -2613,7 +2613,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
> diff --git a/src/radeon_kms.c b/src/radeon_kms.c
> index 940aad2..41ee597 100644
> --- a/src/radeon_kms.c
> +++ b/src/radeon_kms.c
> @@ -241,7 +241,6 @@ static Bool RADEONCreateScreenResources_KMS(ScreenPtr pScreen)
>  {
>      ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
>      RADEONInfoPtr  info   = RADEONPTR(pScrn);
> -    rrScrPrivPtr rrScrPriv = rrGetScrPriv(pScreen);
>      PixmapPtr pixmap;
>      struct radeon_surface *surface;
>
> @@ -251,17 +250,21 @@ static Bool RADEONCreateScreenResources_KMS(ScreenPtr pScreen)
>      pScreen->CreateScreenResources = RADEONCreateScreenResources_KMS;
>
>      /* Set the RandR primary output if Xorg hasn't */
> -    if (
> +    if (dixPrivateKeyRegistered(rrPrivKey)) {
> +       rrScrPrivPtr rrScrPriv = rrGetScrPriv(pScreen);
> +
> +       if (
>  #ifdef RADEON_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, FALSE))
> --
> 2.8.1
>
> _______________________________________________
> xorg-driver-ati mailing list
> xorg-driver-ati at lists.x.org
> https://lists.x.org/mailman/listinfo/xorg-driver-ati


More information about the xorg-driver-ati mailing list