i810 patch to swap Xinerama screens using mergedfb

emisca emisca.ml at gmail.com
Fri Jan 12 04:40:34 PST 2007


I've read the code... there is a logic that assigns the first logical
xinerama screen to the screen at bottom or left. The screen position
doesn't permit to swap the logical xinerama screen number.
My patch does it. Radeon man page explain this in that way:
       Option "MergedXineramaCRT2IsScreen0" "boolean"
              By default the pseudo-Xinerama provided by the driver makes  the
              left-most  or  bottom head Xinerama screen 0.  Certain Xinerama-
              aware applications do special things with screen 0.   To  change
              that behavior, use this option.
              The default value is undefined.

This is what I've implemented on i810 driver...

2007/1/12, Alan Hourihane <alanh at fairlite.demon.co.uk>:
> Have you tried using LeftOf or Below, instead of what you've probably
> got now is RightOf or Above ??
>
> Alan.
>
> On Fri, 2007-01-12 at 12:34 +0100, emisca wrote:
> > nobody cares about this... I find it very useful, ati driver has a
> > similar behaviour, and I like to see it or a similar thing included
> > upstream. Should it be possible?
> >
> > 2007/1/5, Emilio Scalise <emisca.ml at gmail.com>:
> > > I've made a simple patch to swap logical screens exported by the fake
> > > xinerama exposed by mergedfb. It's similar to the setting present in
> > > the radeon driver "MergedXineramaCRT2IsScreen0". I've used a notation
> > > similar to i810 option's names.
> > > Now that I've found where to get latest agpgart modules, I will try it
> > > using Ross Burton source debian packages (thanks Ross for those.. ;-)
> > > ).
> > >
> > > This is the patch.. it works well for me........ (it's against 1.7.2
> > > version, main branch, but it should apply also on newer versions).
> > > Please merge it (if you like it)....
> > >
> > > --- i830_driver.c       2006-10-13 13:52:26.000000000 +0200
> > > +++ /home/emi/i810drivnew.c     2007-01-03 13:42:23.000000000 +0100
> > > @@ -268,6 +268,7 @@
> > >     OPTION_SECONDHSYNC,
> > >     OPTION_SECONDVREFRESH,
> > >     OPTION_SECONDPOSITION,
> > > +   OPTION_SECONDISSCRN0,
> > >     OPTION_INTELXINERAMA
> > >  } I830Opts;
> > >
> > > @@ -295,6 +296,7 @@
> > >     {OPTION_SECONDHSYNC,        "SecondMonitorHorizSync",OPTV_STRING,
> > >  {0}, FALSE },
> > >     {OPTION_SECONDVREFRESH,"SecondMonitorVertRefresh",OPTV_STRING,{0}, FALSE },
> > >     {OPTION_SECONDPOSITION,"SecondPosition",OPTV_STRING,        {0},    FALSE },
> > > +   {OPTION_SECONDISSCRN0,"MergedXineramaSecondIsScreen0",
> > > OPTV_BOOLEAN, {0}, FALSE },
> > >     {OPTION_INTELXINERAMA,"MergedXinerama",OPTV_BOOLEAN,        {0},    TRUE},
> > >     {-1,                        NULL,           OPTV_NONE,      {0},    FALSE}
> > >  };
> > > @@ -4685,6 +4687,13 @@
> > >           }
> > >           xfree(tempstr);
> > >        }
> > > +
> > > +      /* If OPTION_SECONDISSCRN0 is true then swap screens */
> > > +      if(xf86GetOptValBool(pI830->Options, OPTION_SECONDISSCRN0, TRUE)) {
> > > +        if (pI830->SecondIsScrn0) pI830->SecondIsScrn0= FALSE;
> > > +        else pI830->SecondIsScrn0= TRUE;
> > > +      }
> > > +
> > >        if((s = (char *)xf86GetOptValString(pI830->Options, OPTION_METAMODES))) {
> > >           pI830->MetaModes = xalloc(strlen(s) + 1);
> > >          if(pI830->MetaModes)
> > >
> > _______________________________________________
> > xorg mailing list
> > xorg at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/xorg
>
>



More information about the xorg mailing list