JBR-4840 cache screen resolution in XToolkit

(cherry picked from commit b0c0a6ff75)
This commit is contained in:
ngubarkov
2022-10-04 16:43:08 +03:00
committed by jbrbot
parent 64898e6a96
commit f660682d37

View File

@@ -465,6 +465,8 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
*/
private boolean loadedXSettings;
private int cachedScreenResolution = 72;
/**
* XSETTINGS for the default screen.
* <p>
@@ -1619,15 +1621,18 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
@Override
public int getScreenResolution() {
long display = getDisplay();
awtLock();
try {
return (int) ((XlibWrapper.DisplayWidth(display,
XlibWrapper.DefaultScreen(display)) * 25.4) /
XlibWrapper.DisplayWidthMM(display,
XlibWrapper.DefaultScreen(display)));
} finally {
awtUnlock();
if (awtTryLock()) {
try {
return cachedScreenResolution =
(int) ((XlibWrapper.DisplayWidth(display,
XlibWrapper.DefaultScreen(display)) * 25.4) /
XlibWrapper.DisplayWidthMM(display,
XlibWrapper.DefaultScreen(display)));
} finally {
awtUnlock();
}
}
return cachedScreenResolution;
}
static native long getDefaultXColormap();