From 441efd17ce8b713f8e65514ac1c4f95d15bebfe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 12 Mar 2015 16:25:36 +0800 Subject: [PATCH] MetaMonitorInfo: Provide scale information Tracking back from the monitor to the output every time we need to figure out the scale of a window on a monitor is inconvenient, so propagate the scale from the output to the monitor it is associated with. https://bugzilla.gnome.org/show_bug.cgi?id=744934 --- src/backends/meta-monitor-manager-private.h | 1 + src/backends/meta-monitor-manager.c | 6 +++++- src/wayland/meta-window-wayland.c | 18 +----------------- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h index e73aec976..e4becc88f 100644 --- a/src/backends/meta-monitor-manager-private.h +++ b/src/backends/meta-monitor-manager-private.h @@ -217,6 +217,7 @@ struct _MetaMonitorInfo gboolean is_primary; gboolean is_presentation; /* XXX: not yet used */ gboolean in_fullscreen; + int scale; /* The primary or first output for this monitor, 0 if we can't figure out. It can be matched to a winsys_id of a MetaOutput. diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 4fe971720..7b3fe578a 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -220,6 +220,7 @@ make_logical_config (MetaMonitorManager *manager) info.tile_group_id = 0; info.rect = crtc->rect; info.refresh_rate = crtc->current_mode->refresh_rate; + info.scale = 1; info.is_primary = FALSE; /* This starts true because we want is_presentation only if all outputs are @@ -270,7 +271,10 @@ make_logical_config (MetaMonitorManager *manager) info->n_outputs = 1; if (output->is_primary || info->winsys_id == 0) - info->winsys_id = output->winsys_id; + { + info->scale = output->scale; + info->winsys_id = output->winsys_id; + } if (info->is_primary) manager->primary_monitor_index = info->number; diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c index 248cb92db..f19dd4c15 100644 --- a/src/wayland/meta-window-wayland.c +++ b/src/wayland/meta-window-wayland.c @@ -415,23 +415,7 @@ should_do_pending_move (MetaWindowWayland *wl_window, int meta_window_wayland_get_main_monitor_scale (MetaWindow *window) { - MetaMonitorManager *monitor_manager = meta_monitor_manager_get (); - MetaOutput *outputs; - guint n_outputs, i; - int output_scale = 1; - - outputs = meta_monitor_manager_get_outputs (monitor_manager, &n_outputs); - - for (i = 0; i < n_outputs; i++) - { - if (outputs[i].winsys_id == window->monitor->winsys_id) - { - output_scale = outputs[i].scale; - break; - } - } - - return output_scale; + return window->monitor->scale; } /**