summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2013-11-20 13:25:54 +0100
committerOwen W. Taylor <otaylor@fishsoup.net>2014-03-14 10:39:18 -0400
commit28cba9f3b8501f002e132491747693190a567c51 (patch)
tree23a5829607b842bc449e683912e6ad3a64fd9885
parent4514696ca55d247b59076351ff96ff2be9c642e6 (diff)
downloadgnome-settings-daemon-28cba9f3b8501f002e132491747693190a567c51.tar.gz
xsettings: Enable hidpi scaling on 4K monitors
Even if HDMI is used. https://bugzilla.gnome.org/show_bug.cgi?id=709859
-rw-r--r--plugins/xsettings/gsd-xsettings-manager.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/plugins/xsettings/gsd-xsettings-manager.c b/plugins/xsettings/gsd-xsettings-manager.c
index 520d8377..9373a0b8 100644
--- a/plugins/xsettings/gsd-xsettings-manager.c
+++ b/plugins/xsettings/gsd-xsettings-manager.c
@@ -229,6 +229,9 @@
#define HIDPI_LIMIT (DPI_FALLBACK * 2)
+/* From http://en.wikipedia.org/wiki/4K_resolution#Resolutions_of_common_formats */
+#define SMALLEST_4K_WIDTH 3656
+
typedef struct _TranslationEntry TranslationEntry;
typedef void (* TranslationFunc) (GnomeXSettingsManager *manager,
TranslationEntry *trans,
@@ -473,6 +476,17 @@ primary_monitor_at_native_resolution (GnomeRROutput *primary)
}
static gboolean
+primary_monitor_is_4k (GnomeRROutput *primary)
+{
+ GnomeRRMode *mode;
+
+ mode = gnome_rr_output_get_current_mode (primary);
+ if (gnome_rr_mode_get_width (mode) >= SMALLEST_4K_WIDTH)
+ return TRUE;
+ return FALSE;
+}
+
+static gboolean
primary_monitor_on_hdmi (GnomeRROutput *primary)
{
const char *name;
@@ -512,8 +526,9 @@ get_window_scale (GnomeXSettingsManager *manager)
output = get_primary_output (rr_screen);
if (!output)
goto out;
- if (!primary_monitor_at_native_resolution (output) ||
- primary_monitor_on_hdmi (output))
+ if (!primary_monitor_at_native_resolution (output))
+ goto out;
+ if (!primary_monitor_is_4k (output) && primary_monitor_on_hdmi (output))
goto out;
display = gdk_display_get_default ();