void meta_renderer_rebuild_views (MetaRenderer *renderer) { MetaRendererPrivate *priv = meta_renderer_get_instance_private (renderer); MetaBackend *backend = meta_get_backend (); MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (backend); MetaMonitorInfo *monitor_infos; unsigned int num_monitor_infos; unsigned int i; g_list_free_full (priv->views, g_object_unref); priv->views = NULL; monitor_infos = meta_monitor_manager_get_monitor_infos (monitor_manager, &num_monitor_infos); for (i = 0; i < num_monitor_infos; i++) { MetaRendererView *view; view = meta_renderer_create_view (renderer, &monitor_infos[i]); priv->views = g_list_append (priv->views, view); } }
static GHashTable * meta_wayland_compositor_update_outputs (MetaWaylandCompositor *compositor, MetaMonitorManager *monitors) { unsigned int i; GHashTable *new_table; MetaMonitorInfo *monitor_infos; unsigned int n_monitor_infos; monitor_infos = meta_monitor_manager_get_monitor_infos (monitors, &n_monitor_infos); new_table = g_hash_table_new_full (NULL, NULL, NULL, wayland_output_destroy_notify); for (i = 0; i < n_monitor_infos; i++) { MetaMonitorInfo *info = &monitor_infos[i]; MetaWaylandOutput *wayland_output; if (info->winsys_id == 0) continue; wayland_output = g_hash_table_lookup (compositor->outputs, GSIZE_TO_POINTER (info->winsys_id)); if (wayland_output) { g_hash_table_steal (compositor->outputs, GSIZE_TO_POINTER (info->winsys_id)); } else wayland_output = meta_wayland_output_new (compositor, info); wayland_output_update_for_output (wayland_output, info); g_hash_table_insert (new_table, GSIZE_TO_POINTER (info->winsys_id), wayland_output); } g_hash_table_destroy (compositor->outputs); return new_table; }