[gnome-shell] hdpi: Revert hacks
- From: Adel Gadllah <agadllah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] hdpi: Revert hacks
- Date: Tue, 18 Feb 2014 22:40:43 +0000 (UTC)
commit 87abbf9b20ad8f70f16f6ecc481f2a6afae9a67a
Author: Adel Gadllah <adel gadllah gmail com>
Date: Tue Feb 18 23:25:10 2014 +0100
hdpi: Revert hacks
Revert the hacks that where added in response to a bug caused by
commit ba459f4d202
https://bugzilla.gnome.org/show_bug.cgi?id=705410
js/ui/layout.js | 20 --------------------
src/shell-global.c | 24 ++++++++++++++++++++++++
2 files changed, 24 insertions(+), 20 deletions(-)
---
diff --git a/js/ui/layout.js b/js/ui/layout.js
index 4111c00..82d848a 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -31,9 +31,6 @@ const MESSAGE_TRAY_PRESSURE_TIMEOUT = 1000; // ms
const HOT_CORNER_PRESSURE_THRESHOLD = 100; // pixels
const HOT_CORNER_PRESSURE_TIMEOUT = 1000; // ms
-// We scale up when the dpi is higher then this (same value used by gsd)
-const HIGH_DPI_LIMIT = 192;
-
function isPopupMetaWindow(actor) {
switch(actor.meta_window.get_window_type()) {
case Meta.WindowType.DROPDOWN_MENU:
@@ -489,25 +486,8 @@ const LayoutManager = new Lang.Class({
return false;
},
- _updateScaling: function() {
- let primary = this.monitors[this.primaryIndex];
- let width_mm = global.gdk_screen.get_monitor_width_mm(this.primaryIndex);
- let height_mm = global.gdk_screen.get_monitor_height_mm(this.primaryIndex);
- if (width_mm == 0 || height_mm == 0) {
- St.ThemeContext.get_for_stage(global.stage).scale_factor = 1;
- return;
- }
- let dpi_x = primary.width / (width_mm / 25.4);
- let dpi_y = primary.height / (height_mm / 25.4);
- if (dpi_x > HIGH_DPI_LIMIT && dpi_y > HIGH_DPI_LIMIT)
- St.ThemeContext.get_for_stage(global.stage).scale_factor = 2;
- else
- St.ThemeContext.get_for_stage(global.stage).scale_factor = 1;
- },
-
_monitorsChanged: function() {
this._updateMonitors();
- this._updateScaling();
this._updateBoxes();
this._updateTrayBarrier();
this._updateHotCorners();
diff --git a/src/shell-global.c b/src/shell-global.c
index cc82566..b2b6e52 100644
--- a/src/shell-global.c
+++ b/src/shell-global.c
@@ -746,6 +746,20 @@ global_stage_after_paint (gpointer data)
return TRUE;
}
+
+static void
+update_scale_factor (gpointer data)
+{
+ ShellGlobal *global = SHELL_GLOBAL (data);
+ ClutterStage *stage = CLUTTER_STAGE (global->stage);
+ StThemeContext *context = st_theme_context_get_for_stage (stage);
+ GValue value = G_VALUE_INIT;
+
+ g_value_init (&value, G_TYPE_INT);
+ gdk_screen_get_setting (global->gdk_screen, "gdk-window-scaling-factor", &value);
+ g_object_set (context, "scale-factor", g_value_get_int (&value), NULL);
+}
+
/* This is an IBus workaround. The flow of events with IBus is that every time
* it gets gets a key event, it:
*
@@ -924,9 +938,19 @@ _shell_global_set_plugin (ShellGlobal *global,
g_signal_connect (global->meta_display, "notify::focus-window",
G_CALLBACK (focus_window_changed), global);
+ /*
+ * We connect to GdkScreen's monitors-changed here to avoid
+ * a race condition. GdkScreen's monitors-changed signal is
+ * emitted *after* the xsetting has been updated.
+ */
+ g_signal_connect (global->gdk_screen, "monitors-changed",
+ G_CALLBACK (update_scale_factor), global);
+
gdk_event_handler_set (gnome_shell_gdk_event_handler, global, NULL);
global->focus_manager = st_focus_manager_get_for_stage (global->stage);
+
+ update_scale_factor (global);
}
GjsContext *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]