diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2016-12-13 21:44:16 +0800 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2017-01-25 16:28:54 +0800 |
commit | ff633f295ea99ee4b36cf396654cf15540e17e58 (patch) | |
tree | c7c159a460fb1fe272f2bb73bfeeabec727132b1 /src/backends/meta-logical-monitor.c | |
parent | 310064601cd9298f7454e05a7899053ff867081a (diff) | |
download | mutter-ff633f295ea99ee4b36cf396654cf15540e17e58.tar.gz |
logical-monitor: Don't duplicate output list
Just use the monitor list and the output lists of each monitor.
https://bugzilla.gnome.org/show_bug.cgi?id=777732
Diffstat (limited to 'src/backends/meta-logical-monitor.c')
-rw-r--r-- | src/backends/meta-logical-monitor.c | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/src/backends/meta-logical-monitor.c b/src/backends/meta-logical-monitor.c index a38653745..054a2ff4f 100644 --- a/src/backends/meta-logical-monitor.c +++ b/src/backends/meta-logical-monitor.c @@ -36,7 +36,6 @@ meta_logical_monitor_new (MetaMonitor *monitor, GList *outputs; GList *l; gboolean is_presentation; - int i; g_assert (meta_monitor_is_active (monitor)); @@ -59,20 +58,15 @@ meta_logical_monitor_new (MetaMonitor *monitor, is_presentation = TRUE; outputs = meta_monitor_get_outputs (monitor); - for (l = outputs, i = 0; l; l = l->next, i++) + for (l = outputs; l; l = l->next) { MetaOutput *output = l->data; output->crtc->logical_monitor = logical_monitor; - if (i <= META_MAX_OUTPUTS_PER_MONITOR) - logical_monitor->outputs[i] = output; - else - g_warning ("Couldn't add all outputs to monitor"); - is_presentation = is_presentation && output->is_presentation; } - logical_monitor->n_outputs = MIN (i, META_MAX_OUTPUTS_PER_MONITOR); + logical_monitor->is_presentation = is_presentation; logical_monitor->monitors = g_list_append (logical_monitor->monitors, @@ -85,30 +79,29 @@ void meta_logical_monitor_add_monitor (MetaLogicalMonitor *logical_monitor, MetaMonitor *monitor) { - GList *outputs; GList *l; gboolean is_presentation; - int i; is_presentation = logical_monitor->is_presentation; logical_monitor->monitors = g_list_append (logical_monitor->monitors, monitor); - outputs = meta_monitor_get_outputs (monitor); - for (l = outputs, i = logical_monitor->n_outputs; l; l = l->next, i++) + for (l = logical_monitor->monitors; l; l = l->next) { - MetaOutput *output = l->data; - - output->crtc->logical_monitor = logical_monitor; - - if (i <= META_MAX_OUTPUTS_PER_MONITOR) - logical_monitor->outputs[i] = output; - else - g_warning ("Couldn't add all outputs to monitor"); - - is_presentation = is_presentation && output->is_presentation; + MetaMonitor *monitor = l->data; + GList *outputs; + GList *l_output; + + outputs = meta_monitor_get_outputs (monitor); + for (l_output = outputs; l_output; l_output = l_output->next) + { + MetaOutput *output = l_output->data; + + is_presentation = is_presentation && output->is_presentation; + output->crtc->logical_monitor = logical_monitor; + } } - logical_monitor->n_outputs = MIN (i, META_MAX_OUTPUTS_PER_MONITOR); + logical_monitor->is_presentation = is_presentation; } @@ -124,6 +117,12 @@ meta_logical_monitor_make_primary (MetaLogicalMonitor *logical_monitor) logical_monitor->is_primary = TRUE; } +GList * +meta_logical_monitor_get_monitors (MetaLogicalMonitor *logical_monitor) +{ + return logical_monitor->monitors; +} + static void meta_logical_monitor_init (MetaLogicalMonitor *logical_monitor) { |