backend: Move GPU ownership from the monitor manager to the backend
Lets work towards making MetaMonitorManager about managing monitors, and not about managing GPUs. This changes other units to keep a pointer to the backend instead of a monitor manager, in case their ownership changed, or their main usage of the monitor manager was to look up GPUs. https://gitlab.gnome.org/GNOME/mutter/issues/548 https://gitlab.gnome.org/GNOME/mutter/merge_requests/525
This commit is contained in:

committed by
Georges Basile Stavracas Neto

parent
e7fd068a78
commit
5c500ad402
@ -511,9 +511,11 @@ meta_monitor_manager_apply_monitors_config (MetaMonitorManager *manager,
|
||||
gboolean
|
||||
meta_monitor_manager_has_hotplug_mode_update (MetaMonitorManager *manager)
|
||||
{
|
||||
GList *gpus;
|
||||
GList *l;
|
||||
|
||||
for (l = manager->gpus; l; l = l->next)
|
||||
gpus = meta_backend_get_gpus (manager->backend);
|
||||
for (l = gpus; l; l = l->next)
|
||||
{
|
||||
MetaGpu *gpu = l->data;
|
||||
|
||||
@ -794,7 +796,6 @@ meta_monitor_manager_finalize (GObject *object)
|
||||
{
|
||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
||||
|
||||
g_list_free_full (manager->gpus, g_object_unref);
|
||||
g_list_free_full (manager->logical_monitors, g_object_unref);
|
||||
|
||||
g_signal_handler_disconnect (manager->backend,
|
||||
@ -1063,10 +1064,12 @@ static GList *
|
||||
combine_gpu_lists (MetaMonitorManager *manager,
|
||||
GList * (*list_getter) (MetaGpu *gpu))
|
||||
{
|
||||
GList *gpus;
|
||||
GList *list = NULL;
|
||||
GList *l;
|
||||
|
||||
for (l = manager->gpus; l; l = l->next)
|
||||
gpus = meta_backend_get_gpus (manager->backend);
|
||||
for (l = gpus; l; l = l->next)
|
||||
{
|
||||
MetaGpu *gpu = l->data;
|
||||
|
||||
@ -2676,26 +2679,6 @@ meta_monitor_manager_get_monitors (MetaMonitorManager *manager)
|
||||
return manager->monitors;
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_monitor_manager_add_gpu:
|
||||
* @manager: A #MetaMonitorManager object
|
||||
*
|
||||
* Should only be called by subclasses. Adds a #MetaGpu to the internal list of
|
||||
* GPU's.
|
||||
*/
|
||||
void
|
||||
meta_monitor_manager_add_gpu (MetaMonitorManager *manager,
|
||||
MetaGpu *gpu)
|
||||
{
|
||||
manager->gpus = g_list_append (manager->gpus, gpu);
|
||||
}
|
||||
|
||||
GList *
|
||||
meta_monitor_manager_get_gpus (MetaMonitorManager *manager)
|
||||
{
|
||||
return manager->gpus;
|
||||
}
|
||||
|
||||
void
|
||||
meta_monitor_manager_get_screen_size (MetaMonitorManager *manager,
|
||||
int *width,
|
||||
@ -2717,6 +2700,7 @@ meta_monitor_manager_get_power_save_mode (MetaMonitorManager *manager)
|
||||
static void
|
||||
rebuild_monitors (MetaMonitorManager *manager)
|
||||
{
|
||||
GList *gpus;
|
||||
GList *l;
|
||||
|
||||
if (manager->monitors)
|
||||
@ -2725,7 +2709,8 @@ rebuild_monitors (MetaMonitorManager *manager)
|
||||
manager->monitors = NULL;
|
||||
}
|
||||
|
||||
for (l = manager->gpus; l; l = l->next)
|
||||
gpus = meta_backend_get_gpus (manager->backend);
|
||||
for (l = gpus; l; l = l->next)
|
||||
{
|
||||
MetaGpu *gpu = l->data;
|
||||
GList *k;
|
||||
@ -2740,7 +2725,7 @@ rebuild_monitors (MetaMonitorManager *manager)
|
||||
{
|
||||
MetaMonitorTiled *monitor_tiled;
|
||||
|
||||
monitor_tiled = meta_monitor_tiled_new (gpu, output);
|
||||
monitor_tiled = meta_monitor_tiled_new (gpu, manager, output);
|
||||
manager->monitors = g_list_append (manager->monitors,
|
||||
monitor_tiled);
|
||||
}
|
||||
@ -2797,7 +2782,7 @@ meta_monitor_manager_real_read_current_state (MetaMonitorManager *manager)
|
||||
|
||||
manager->serial++;
|
||||
|
||||
for (l = manager->gpus; l; l = l->next)
|
||||
for (l = meta_backend_get_gpus (manager->backend); l; l = l->next)
|
||||
{
|
||||
MetaGpu *gpu = l->data;
|
||||
GError *error = NULL;
|
||||
|
Reference in New Issue
Block a user