summaryrefslogtreecommitdiff
path: root/src/backends/meta-logical-monitor.c
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2016-12-13 21:44:16 +0800
committerJonas Ådahl <jadahl@gmail.com>2017-01-25 16:28:54 +0800
commitff633f295ea99ee4b36cf396654cf15540e17e58 (patch)
treec7c159a460fb1fe272f2bb73bfeeabec727132b1 /src/backends/meta-logical-monitor.c
parent310064601cd9298f7454e05a7899053ff867081a (diff)
downloadmutter-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.c45
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)
{