mirror of
https://github.com/brl/mutter.git
synced 2024-11-24 17:10:40 -05:00
bc3162460f
This commit changes the new configuration system to use monitors.xml instead of monitors-experimental.xml. When starting up and the monitors.xml file is loaded, if a legacy monitors.xml file is discovered (it has the version number 1), an attempt is made to migrate the stored configuration onto the new system. This is done in two steps: 1) Parsing and translation of the old configuration. This works by parsing file using the mostly the old parser, but then translating the resulting configuration structs into the new configuration system. As the legacy configuration system doesn't carry over some state (such as tiling and scale used), some things are not available. For tiling, the migration paths makes an attempt to discover tiled monitors by comparing EDID data, and guessing what the main tile is. Determination of the scale of a migrated configuration is postponed until the configuration is actually applied. This works by flagging the configuration as 'migrated'. 2) Finishing the migration when applying. When a configuration with the 'migrated' flag is retrieved from the configuration store, the final step of the migration is taken place. This involves calculating the preferred scale given the mode configured, while making sure this doesn't result in any overlapping logical monitor regions etc. https://bugzilla.gnome.org/show_bug.cgi?id=777732
54 lines
2.3 KiB
C
54 lines
2.3 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
|
|
/*
|
|
* Copyright (C) 2017 Red Hat
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef META_MONITOR_CONFIG_STORE_H
|
|
#define META_MONITOR_CONFIG_STORE_H
|
|
|
|
#include <glib-object.h>
|
|
|
|
#include "backends/meta-monitor-config-manager.h"
|
|
|
|
#define META_TYPE_MONITOR_CONFIG_STORE (meta_monitor_config_store_get_type ())
|
|
G_DECLARE_FINAL_TYPE (MetaMonitorConfigStore, meta_monitor_config_store,
|
|
META, MONITOR_CONFIG_STORE, GObject)
|
|
|
|
MetaMonitorConfigStore * meta_monitor_config_store_new (MetaMonitorManager *monitor_manager);
|
|
|
|
MetaMonitorsConfig * meta_monitor_config_store_lookup (MetaMonitorConfigStore *config_store,
|
|
MetaMonitorsConfigKey *key);
|
|
|
|
void meta_monitor_config_store_add (MetaMonitorConfigStore *config_store,
|
|
MetaMonitorsConfig *config);
|
|
|
|
void meta_monitor_config_store_remove (MetaMonitorConfigStore *config_store,
|
|
MetaMonitorsConfig *config);
|
|
|
|
gboolean meta_monitor_config_store_set_custom (MetaMonitorConfigStore *config_store,
|
|
const char *read_path,
|
|
const char *write_path,
|
|
GError **error);
|
|
|
|
int meta_monitor_config_store_get_config_count (MetaMonitorConfigStore *config_store);
|
|
|
|
MetaMonitorManager * meta_monitor_config_store_get_monitor_manager (MetaMonitorConfigStore *config_store);
|
|
|
|
#endif /* META_MONITOR_CONFIG_STORE_H */
|