monitor-manager: Store logical monitors in a GList

Instead of storing the logical monitors in an array and having users
either look up them in the array given an index or iterate using
indices, put it in a GList, and use GList iterators when iterating and
alternative API where array indices were previously used.

This allows for more liberty regarding the type of the logical monitor.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
This commit is contained in:
Jonas Ådahl
2016-12-02 16:00:03 +08:00
parent 20b8743f21
commit 1fb0e8e9bb
9 changed files with 175 additions and 162 deletions

View File

@ -57,22 +57,20 @@ meta_renderer_rebuild_views (MetaRenderer *renderer)
MetaBackend *backend = meta_get_backend ();
MetaMonitorManager *monitor_manager =
meta_backend_get_monitor_manager (backend);
MetaLogicalMonitor *logical_monitors;
unsigned int n_logical_monitors;
unsigned int i;
GList *logical_monitors, *l;
g_list_free_full (priv->views, g_object_unref);
priv->views = NULL;
logical_monitors =
meta_monitor_manager_get_logical_monitors (monitor_manager,
&n_logical_monitors);
meta_monitor_manager_get_logical_monitors (monitor_manager);
for (i = 0; i < n_logical_monitors; i++)
for (l = logical_monitors; l; l = l->next)
{
MetaLogicalMonitor *logical_monitor = l->data;
MetaRendererView *view;
view = meta_renderer_create_view (renderer, &logical_monitors[i]);
view = meta_renderer_create_view (renderer, logical_monitor);
priv->views = g_list_append (priv->views, view);
}
}