[PATCH] Fix XineramaQueryScreens for reverse prime

Dave Airlie airlied at gmail.com
Mon Feb 8 04:17:05 UTC 2016


On 4 February 2016 at 23:06, Jan Burgmeier
<jan.burgmeier at unicon-software.com> wrote:
> Bugzilla: https://bugs.freedesktop.org/92313

Reviewed-by: Dave Airlie <airlied at redhat.com>

though it might be nice to have some more info from the bug in the
commit message.

> ---
>  randr/rrmonitor.c |  6 +++---
>  randr/rroutput.c  | 12 ++++++++++++
>  2 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/randr/rrmonitor.c b/randr/rrmonitor.c
> index c37dcf8..58041bb 100644
> --- a/randr/rrmonitor.c
> +++ b/randr/rrmonitor.c
> @@ -326,7 +326,7 @@ RRMonitorMakeList(ScreenPtr screen, Bool get_active, RRMonitorPtr *monitors_ret,
>          RRMonitorSetFromClient(pScrPriv->monitors[list.client_primary], mon);
>          mon++;
>      } else if (list.server_primary >= 0) {
> -        RRMonitorSetFromServer(pScrPriv->crtcs[list.server_primary], mon);
> +        RRMonitorSetFromServer(list.server_crtc[list.server_primary], mon);
>          mon++;
>      }
>
> @@ -354,8 +354,8 @@ RRMonitorMakeList(ScreenPtr screen, Bool get_active, RRMonitorPtr *monitors_ret,
>
>      /* And finish with the list of crtc-inspired monitors
>       */
> -    for (c = 0; c < pScrPriv->numCrtcs; c++) {
> -        RRCrtcPtr crtc = pScrPriv->crtcs[c];
> +    for (c = 0; c < list.num_crtcs; c++) {
> +        RRCrtcPtr crtc = list.server_crtc[c];
>          if (c == list.server_primary && list.client_primary < 0)
>              continue;
>
> diff --git a/randr/rroutput.c b/randr/rroutput.c
> index d12b9ba..2ba62fa 100644
> --- a/randr/rroutput.c
> +++ b/randr/rroutput.c
> @@ -543,6 +543,7 @@ ProcRRSetOutputPrimary(ClientPtr client)
>      WindowPtr pWin;
>      rrScrPrivPtr pScrPriv;
>      int ret;
> +    ScreenPtr slave;
>
>      REQUEST_SIZE_MATCH(xRRSetOutputPrimaryReq);
>
> @@ -565,7 +566,18 @@ ProcRRSetOutputPrimary(ClientPtr client)
>
>      pScrPriv = rrGetScrPriv(pWin->drawable.pScreen);
>      if (pScrPriv)
> +    {
>          RRSetPrimaryOutput(pWin->drawable.pScreen, pScrPriv, output);
> +
> +        xorg_list_for_each_entry(slave,
> +                                 &pWin->drawable.pScreen->output_slave_list,
> +                                 output_head) {
> +            rrScrPrivPtr pSlavePriv;
> +            pSlavePriv = rrGetScrPriv(slave);
> +
> +            RRSetPrimaryOutput(slave, pSlavePriv, output);
> +        }
> +    }
>
>      return Success;
>  }
> --
> 2.7.0
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list