forked from pool/xorg-x11-server
Stefan Dirsch
7e6a980b1f
Copy from home:oertel:branches:openSUSE:Factory/xorg-x11-server via accept of submit request 35298 revision 8. Request was accepted with message: reviewed ok. OBS-URL: https://build.opensuse.org/request/show/35298 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=229
59 lines
2.0 KiB
Diff
59 lines
2.0 KiB
Diff
Index: hw/xfree86/common/xf86Helper.c
|
|
================================================================================
|
|
--- hw/xfree86/common/xf86Helper.c
|
|
+++ hw/xfree86/common/xf86Helper.c
|
|
@@ -974,12 +974,22 @@
|
|
} else if (pScrn->widthmm > 0 || pScrn->heightmm > 0) {
|
|
from = X_CONFIG;
|
|
if (pScrn->widthmm > 0) {
|
|
- pScrn->xDpi =
|
|
- (int)((double)pScrn->virtualX * MMPERINCH / pScrn->widthmm);
|
|
+ if (pScrn->modes && pScrn->modes->HDisplay > 0) {
|
|
+ pScrn->xDpi =
|
|
+ (int)((double) pScrn->modes->HDisplay * MMPERINCH / pScrn->widthmm);
|
|
+ } else {
|
|
+ pScrn->xDpi =
|
|
+ (int)((double)pScrn->virtualX * MMPERINCH / pScrn->widthmm);
|
|
+ }
|
|
}
|
|
if (pScrn->heightmm > 0) {
|
|
- pScrn->yDpi =
|
|
- (int)((double)pScrn->virtualY * MMPERINCH / pScrn->heightmm);
|
|
+ if (pScrn->modes && pScrn->modes->VDisplay > 0) {
|
|
+ pScrn->yDpi =
|
|
+ (int)((double)pScrn->modes->VDisplay * MMPERINCH / pScrn->heightmm);
|
|
+ } else {
|
|
+ pScrn->yDpi =
|
|
+ (int)((double)pScrn->virtualY * MMPERINCH / pScrn->heightmm);
|
|
+ }
|
|
}
|
|
if (pScrn->xDpi > 0 && pScrn->yDpi <= 0)
|
|
pScrn->yDpi = pScrn->xDpi;
|
|
@@ -1014,12 +1024,22 @@
|
|
pScrn->widthmm = ddcWidthmm;
|
|
pScrn->heightmm = ddcHeightmm;
|
|
if (pScrn->widthmm > 0) {
|
|
- pScrn->xDpi =
|
|
- (int)((double)pScrn->virtualX * MMPERINCH / pScrn->widthmm);
|
|
+ if (pScrn->modes && pScrn->modes->HDisplay > 0) {
|
|
+ pScrn->xDpi =
|
|
+ (int)((double) pScrn->modes->HDisplay * MMPERINCH / pScrn->widthmm);
|
|
+ } else {
|
|
+ pScrn->xDpi =
|
|
+ (int)((double)pScrn->virtualX * MMPERINCH / pScrn->widthmm);
|
|
+ }
|
|
}
|
|
if (pScrn->heightmm > 0) {
|
|
- pScrn->yDpi =
|
|
- (int)((double)pScrn->virtualY * MMPERINCH / pScrn->heightmm);
|
|
+ if (pScrn->modes && pScrn->modes->VDisplay > 0) {
|
|
+ pScrn->yDpi =
|
|
+ (int)((double)pScrn->modes->VDisplay * MMPERINCH / pScrn->heightmm);
|
|
+ } else {
|
|
+ pScrn->yDpi =
|
|
+ (int)((double)pScrn->virtualY * MMPERINCH / pScrn->heightmm);
|
|
+ }
|
|
}
|
|
if (pScrn->xDpi > 0 && pScrn->yDpi <= 0)
|
|
pScrn->yDpi = pScrn->xDpi;
|