Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Implement X11 dpi autodetection
- Loading branch information
Showing
with
36 additions
and
5 deletions.
-
+1
−1
minetest.conf.example
-
+35
−4
src/porting.cpp
|
@@ -224,7 +224,7 @@ |
|
|
#directional_colored_fog = true |
|
|
# Delay showing tooltips, stated in milliseconds |
|
|
#tooltip_show_delay = 400 |
|
|
# Adjust dpi configuration to your screen (Desktop only) e.g. for 4k screens |
|
|
# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens |
|
|
#screen_dpi = 72 |
|
|
# Default timeout for cURL, stated in milliseconds. |
|
|
# Only has an effect if compiled with cURL. |
|
|
|
@@ -570,17 +570,48 @@ void setXorgClassHint(const video::SExposedVideoData &video_data, |
|
|
} |
|
|
|
|
|
#ifndef SERVER |
|
|
v2u32 getWindowSize() { |
|
|
v2u32 getWindowSize() |
|
|
{ |
|
|
return device->getVideoDriver()->getScreenSize(); |
|
|
} |
|
|
|
|
|
#ifndef __ANDROID__ |
|
|
#ifdef XORG_USED |
|
|
float getDisplayDensity() |
|
|
{ |
|
|
const char* current_display = getenv("DISPLAY"); |
|
|
|
|
|
if (current_display != NULL) { |
|
|
Display * x11display = XOpenDisplay(current_display); |
|
|
|
|
|
if (x11display != NULL) { |
|
|
/* try x direct */ |
|
|
float dpi_height = |
|
|
floor(DisplayHeight(x11display, 0) / |
|
|
(DisplayHeightMM(x11display, 0) * 0.039370) + 0.5); |
|
|
float dpi_width = |
|
|
floor(DisplayWidth(x11display, 0) / |
|
|
(DisplayWidthMM(x11display, 0) * 0.039370) +0.5); |
|
|
|
|
|
XCloseDisplay(x11display); |
|
|
|
|
|
return (std::max(dpi_height,dpi_width) / 96.0); |
|
|
} |
|
|
} |
|
|
|
|
|
float getDisplayDensity() { |
|
|
/* return manually specified dpi */ |
|
|
return g_settings->getFloat("screen_dpi")/96.0; |
|
|
} |
|
|
|
|
|
v2u32 getDisplaySize() { |
|
|
#else |
|
|
float getDisplayDensity() |
|
|
{ |
|
|
return g_settings->getFloat("screen_dpi")/96.0; |
|
|
} |
|
|
#endif |
|
|
|
|
|
#ifndef __ANDROID__ |
|
|
v2u32 getDisplaySize() |
|
|
{ |
|
|
IrrlichtDevice *nulldevice = createDevice(video::EDT_NULL); |
|
|
|
|
|
core::dimension2d<u32> deskres = nulldevice->getVideoModeList()->getDesktopResolution(); |
|
|