Alex Deucher wrote:
How is DPI supposed to work if you have a virtual desktop larger than
the current mode? the current code seems to produce the wrong DPI. xf86SetDpi() has the following code:


     if (pScrn->widthmm > 0) {
        pScrn->xDpi =
          (int)((double)pScrn->virtualX * MMPERINCH / pScrn->widthmm);
     }
     if (pScrn->heightmm > 0) {
        pScrn->yDpi =
         (int)((double)pScrn->virtualY * MMPERINCH / pScrn->heightmm);
     }

if you have, for example,
DisplaySize 300 230 and a virtual resolution of say 2048x768 and a mode of 1024x768, the
DPI would get set to 173, 84. which (I think) is wrong. it should be
86, 84 which is what you would get when your mode matches your virtual
resolution. I'm having the same problem with Mergedfb since it uses a
virtual resolution with two viewports looking into it. I could add the
heightmm or widthmm of both heads to make the DPI "correct" for the
virtual size with respect to the two heads. I'm not sure how xinerama
deals with it. maybe the current behavior is right? I dunno.


Thoughts?

Without actually having looked at this, my preliminary opinion is that what we do presently is correct. I don't see the mode dimensions anywhere in the calculation you quoted above.


virtualX and Y can be bigger than the viewport in any case (not just MergedFB mode). I think the whole DPI system is based on the assumption that you _see_ the whole (virtual) desktop, ie you're running at the maximum mode(s on each head). The only thing one has to do is to set DisplaySize correctly, namely to the over-all size of BOTH heads (depending on their relative location, of course).

As Aitchison showed in his reply, Xinerama does basically the same as it just resizes the mmWidth/Height with regard to the second head, although it does this by calculating some sort of average.

Be it adding the second head's dimension to the mmHeight/Width, be it calculating an average, both methods are likewise inaccurate if you use two output devices with different actual DPI values.

But as said, this is my unqualified opinion without looking at it closer. I'll think about it.

Thomas

--
Thomas Winischhofer
Vienna/Austria
thomas AT winischhofer DOT net          http://www.winischhofer.net/
twini AT xfree86 DOT org

_______________________________________________
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel

Reply via email to