summaryrefslogtreecommitdiff
path: root/mate-settings-daemon
diff options
context:
space:
mode:
authorVictor Kareh <[email protected]>2018-02-05 15:22:57 -0500
committerraveit65 <[email protected]>2018-02-06 17:19:42 +0100
commitdaa7f5881476e1b09ee81ec21a4dd40180f69441 (patch)
tree8a23ee840ac3b510abc275b349f2f31f2c69dda3 /mate-settings-daemon
parent16137a4d4c51fae1d577ea4c534af4a89f5c1558 (diff)
downloadmate-settings-daemon-daa7f5881476e1b09ee81ec21a4dd40180f69441.tar.bz2
mate-settings-daemon-daa7f5881476e1b09ee81ec21a4dd40180f69441.tar.xz
Load xsettings during initialization phase
Also set QT_* env variables during init, and restart marco, mate-panel, toggle desktop icons when changing scales
Diffstat (limited to 'mate-settings-daemon')
-rw-r--r--mate-settings-daemon/main.c17
-rw-r--r--mate-settings-daemon/mate-settings-manager.c40
-rw-r--r--mate-settings-daemon/mate-settings-manager.h10
3 files changed, 54 insertions, 13 deletions
diff --git a/mate-settings-daemon/main.c b/mate-settings-daemon/main.c
index da87c36..b070361 100644
--- a/mate-settings-daemon/main.c
+++ b/mate-settings-daemon/main.c
@@ -519,13 +519,24 @@ main (int argc, char *argv[])
goto out;
}
+ /* If we aren't started by dbus then load the plugins automatically during the
+ * Initialization phase. Otherwise, wait for an Awake etc. */
+ if (g_getenv ("DBUS_STARTER_BUS_TYPE") == NULL) {
+ error = NULL;
+ res = mate_settings_manager_start (manager, PLUGIN_LOAD_INIT, &error);
+ if (! res) {
+ g_warning ("Unable to start: %s", error->message);
+ g_error_free (error);
+ }
+ }
+
set_session_over_handler (bus, manager);
- /* If we aren't started by dbus then load the plugins
- automatically. Otherwise, wait for an Awake etc. */
+ /* If we aren't started by dbus then load the plugins automatically after
+ * mate-settings-daemon has registered itself. Otherwise, wait for an Awake etc. */
if (g_getenv ("DBUS_STARTER_BUS_TYPE") == NULL) {
error = NULL;
- res = mate_settings_manager_start (manager, &error);
+ res = mate_settings_manager_start (manager, PLUGIN_LOAD_DEFER, &error);
if (! res) {
g_warning ("Unable to start: %s", error->message);
g_error_free (error);
diff --git a/mate-settings-daemon/mate-settings-manager.c b/mate-settings-daemon/mate-settings-manager.c
index b076951..4936c84 100644
--- a/mate-settings-daemon/mate-settings-manager.c
+++ b/mate-settings-daemon/mate-settings-manager.c
@@ -50,6 +50,8 @@ struct MateSettingsManagerPrivate
{
DBusGConnection *connection;
GSList *plugins;
+ gint init_load_priority;
+ gint load_init_flag;
};
enum {
@@ -80,15 +82,25 @@ mate_settings_manager_error_quark (void)
}
static void
-maybe_activate_plugin (MateSettingsPluginInfo *info, gpointer user_data)
+maybe_activate_plugin (MateSettingsPluginInfo *info,
+ MateSettingsManager *manager)
{
if (mate_settings_plugin_info_get_enabled (info)) {
- gboolean res;
- res = mate_settings_plugin_info_activate (info);
- if (res) {
- g_debug ("Plugin %s: active", mate_settings_plugin_info_get_location (info));
+ int plugin_priority;
+ plugin_priority = mate_settings_plugin_info_get_priority (info);
+
+ if (manager->priv->load_init_flag == PLUGIN_LOAD_ALL ||
+ (manager->priv->load_init_flag == PLUGIN_LOAD_INIT && plugin_priority <= manager->priv->init_load_priority) ||
+ (manager->priv->load_init_flag == PLUGIN_LOAD_DEFER && plugin_priority > manager->priv->init_load_priority)) {
+ gboolean res;
+ res = mate_settings_plugin_info_activate (info);
+ if (res) {
+ g_debug ("Plugin %s: active", mate_settings_plugin_info_get_location (info));
+ } else {
+ g_debug ("Plugin %s: activation failed", mate_settings_plugin_info_get_location (info));
+ }
} else {
- g_debug ("Plugin %s: activation failed", mate_settings_plugin_info_get_location (info));
+ g_debug ("Plugin %s: loading deferred or previously loaded", mate_settings_plugin_info_get_location (info));
}
} else {
g_debug ("Plugin %s: inactive", mate_settings_plugin_info_get_location (info));
@@ -262,7 +274,7 @@ _load_all (MateSettingsManager *manager)
_load_dir (manager, MATE_SETTINGS_PLUGINDIR G_DIR_SEPARATOR_S);
manager->priv->plugins = g_slist_sort (manager->priv->plugins, (GCompareFunc) compare_priority);
- g_slist_foreach (manager->priv->plugins, (GFunc) maybe_activate_plugin, NULL);
+ g_slist_foreach (manager->priv->plugins, (GFunc) maybe_activate_plugin, manager);
mate_settings_profile_end (NULL);
}
@@ -295,7 +307,7 @@ mate_settings_manager_awake (MateSettingsManager *manager,
GError **error)
{
g_debug ("Awake called");
- return mate_settings_manager_start (manager, error);
+ return mate_settings_manager_start (manager, PLUGIN_LOAD_ALL, error);
}
static gboolean
@@ -319,7 +331,8 @@ register_manager (MateSettingsManager *manager)
gboolean
mate_settings_manager_start (MateSettingsManager *manager,
- GError **error)
+ gint load_init_flag,
+ GError **error)
{
gboolean ret;
@@ -339,6 +352,7 @@ mate_settings_manager_start (MateSettingsManager *manager,
goto out;
}
+ manager->priv->load_init_flag = load_init_flag;
_load_all (manager);
ret = TRUE;
@@ -405,8 +419,16 @@ mate_settings_manager_class_init (MateSettingsManagerClass *klass)
static void
mate_settings_manager_init (MateSettingsManager *manager)
{
+ char *schema;
+ GSettings *settings;
manager->priv = MATE_SETTINGS_MANAGER_GET_PRIVATE (manager);
+
+ schema = g_strdup_printf ("%s.plugins", DEFAULT_SETTINGS_PREFIX);
+ if (is_schema (schema)) {
+ settings = g_settings_new (schema);
+ manager->priv->init_load_priority = g_settings_get_int (settings, "init-load-priority");
+ }
}
static void
diff --git a/mate-settings-daemon/mate-settings-manager.h b/mate-settings-daemon/mate-settings-manager.h
index 3d2296f..6eaf360 100644
--- a/mate-settings-daemon/mate-settings-manager.h
+++ b/mate-settings-daemon/mate-settings-manager.h
@@ -57,6 +57,13 @@ typedef enum
MATE_SETTINGS_MANAGER_ERROR_GENERAL
} MateSettingsManagerError;
+enum
+{
+ PLUGIN_LOAD_ALL,
+ PLUGIN_LOAD_INIT,
+ PLUGIN_LOAD_DEFER
+};
+
#define MATE_SETTINGS_MANAGER_ERROR mate_settings_manager_error_quark ()
GQuark mate_settings_manager_error_quark (void);
@@ -65,7 +72,8 @@ GType mate_settings_manager_get_type (void);
MateSettingsManager * mate_settings_manager_new (void);
gboolean mate_settings_manager_start (MateSettingsManager *manager,
- GError **error);
+ gint load_init_flag,
+ GError **error);
void mate_settings_manager_stop (MateSettingsManager *manager);
gboolean mate_settings_manager_awake (MateSettingsManager *manager,