[clutter] Add more sections to the Clutter configuration file
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] Add more sections to the Clutter configuration file
- Date: Tue, 11 Oct 2011 16:56:16 +0000 (UTC)
commit 372b39fd63880955d88fe205b7a23c202938e639
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Tue Oct 11 15:28:47 2011 +0100
Add more sections to the Clutter configuration file
On top of the existing "Settings" group in the settings.ini file we
should have two more groups:
Environment - contains all the configuration possible through
environment variables
Debug - contains all the possible debug variables
clutter/clutter-main.c | 165 ++++++++++++++++++++++++++++++++++--
clutter/clutter-settings-private.h | 4 +-
clutter/clutter-settings.c | 28 +-----
3 files changed, 165 insertions(+), 32 deletions(-)
---
diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
index 8992909..28b2857 100644
--- a/clutter/clutter-main.c
+++ b/clutter/clutter-main.c
@@ -216,22 +216,175 @@ clutter_threads_init_default (void)
clutter_threads_unlock = clutter_threads_impl_unlock;
}
-#define N_CONF_DIRS 2
+#define ENVIRONMENT_GROUP "Environment"
+#define DEBUG_GROUP "Debug"
+
+static void
+clutter_config_read_from_key_file (GKeyFile *keyfile)
+{
+ GError *key_error = NULL;
+ gboolean bool_value;
+ gint int_value;
+ const gchar *str_value;
+
+ if (!g_key_file_has_group (keyfile, ENVIRONMENT_GROUP))
+ return;
+
+ bool_value =
+ g_key_file_get_boolean (keyfile, ENVIRONMENT_GROUP,
+ "ShowFps",
+ &key_error);
+
+ if (key_error != NULL)
+ g_clear_error (&key_error);
+ else
+ clutter_show_fps = bool_value;
+
+ bool_value =
+ g_key_file_get_boolean (keyfile, ENVIRONMENT_GROUP,
+ "DisableMipmappedText",
+ &key_error);
+
+ if (key_error != NULL)
+ g_clear_error (&key_error);
+ else
+ clutter_disable_mipmap_text = bool_value;
+
+ bool_value =
+ g_key_file_get_boolean (keyfile, ENVIRONMENT_GROUP,
+ "UseFuzzyPicking",
+ &key_error);
+
+ if (key_error != NULL)
+ g_clear_error (&key_error);
+ else
+ clutter_use_fuzzy_picking = bool_value;
+
+ bool_value =
+ g_key_file_get_boolean (keyfile, ENVIRONMENT_GROUP,
+ "EnableAccessibility",
+ &key_error);
+
+ if (key_error != NULL)
+ g_clear_error (&key_error);
+ else
+ clutter_enable_accessibility = bool_value;
+
+ int_value =
+ g_key_file_get_integer (keyfile, ENVIRONMENT_GROUP,
+ "DefaultFps",
+ &key_error);
+
+ if (key_error != NULL)
+ g_clear_error (&key_error);
+ else
+ clutter_default_fps = int_value;
+
+ str_value =
+ g_key_file_get_string (keyfile, ENVIRONMENT_GROUP,
+ "TextDirection",
+ &key_error);
+
+ if (key_error != NULL)
+ g_clear_error (&key_error);
+ else
+ {
+ if (g_strcmp0 (str_value, "rtl") == 0)
+ clutter_text_direction = CLUTTER_TEXT_DIRECTION_RTL;
+ else
+ clutter_text_direction = CLUTTER_TEXT_DIRECTION_LTR;
+ }
+}
+
+#ifdef CLUTTER_ENABLE_DEBUG
+static void
+clutter_debug_read_from_key_file (GKeyFile *keyfile)
+{
+ GError *key_error = NULL;
+ const gchar *value;
+
+ if (!g_key_file_has_group (keyfile, DEBUG_GROUP))
+ return;
+
+ value = g_key_file_get_value (keyfile, DEBUG_GROUP,
+ "Debug",
+ &key_error);
+ if (key_error == NULL)
+ {
+ clutter_debug_flags |=
+ g_parse_debug_string (value,
+ clutter_debug_keys,
+ G_N_ELEMENTS (clutter_debug_keys));
+ }
+ else
+ g_clear_error (&key_error);
+
+ value = g_key_file_get_value (keyfile, DEBUG_GROUP,
+ "PaintDebug",
+ &key_error);
+ if (key_error == NULL)
+ {
+ clutter_paint_debug_flags |=
+ g_parse_debug_string (value,
+ clutter_paint_debug_keys,
+ G_N_ELEMENTS (clutter_paint_debug_keys));
+ }
+ else
+ g_clear_error (&key_error);
+
+ value = g_key_file_get_value (keyfile, DEBUG_GROUP,
+ "PickDebug",
+ &key_error);
+ if (key_error == NULL)
+ {
+ clutter_pick_debug_flags |=
+ g_parse_debug_string (value,
+ clutter_pick_debug_keys,
+ G_N_ELEMENTS (clutter_pick_debug_keys));
+ }
+ else
+ g_clear_error (&key_error);
+}
+#endif
+
+static void
+clutter_config_read_from_file (const gchar *config_path)
+{
+ ClutterSettings *settings = clutter_settings_get_default ();
+ GKeyFile *key_file = g_key_file_new ();
+ GError *error = NULL;
+
+ g_key_file_load_from_file (key_file, config_path, G_KEY_FILE_NONE, &error);
+ if (error == NULL)
+ {
+ clutter_config_read_from_key_file (key_file);
+#ifdef CLUTTER_ENABLE_DEBUG
+ clutter_debug_read_from_key_file (key_file);
+#endif
+ _clutter_settings_read_from_key_file (settings, key_file);
+ }
+ else
+ {
+ g_warning ("Unable to read configuration settings from '%s': %s",
+ config_path,
+ error->message);
+ g_error_free (error);
+ }
+
+ g_key_file_free (key_file);
+}
static void
clutter_config_read (void)
{
- ClutterSettings *settings;
gchar *config_path;
- settings = clutter_settings_get_default ();
-
config_path = g_build_filename (CLUTTER_SYSCONFDIR,
"clutter-1.0",
"settings.ini",
NULL);
if (g_file_test (config_path, G_FILE_TEST_EXISTS))
- _clutter_settings_read_from_file (settings, config_path);
+ clutter_config_read_from_file (config_path);
g_free (config_path);
@@ -240,7 +393,7 @@ clutter_config_read (void)
"settings.ini",
NULL);
if (g_file_test (config_path, G_FILE_TEST_EXISTS))
- _clutter_settings_read_from_file (settings, config_path);
+ clutter_config_read_from_file (config_path);
g_free (config_path);
}
diff --git a/clutter/clutter-settings-private.h b/clutter/clutter-settings-private.h
index 112f542..0e1c463 100644
--- a/clutter/clutter-settings-private.h
+++ b/clutter/clutter-settings-private.h
@@ -8,8 +8,8 @@ G_BEGIN_DECLS
void _clutter_settings_set_backend (ClutterSettings *settings,
ClutterBackend *backend);
-void _clutter_settings_read_from_file (ClutterSettings *settings,
- const gchar *file);
+void _clutter_settings_read_from_key_file (ClutterSettings *settings,
+ GKeyFile *key_file);
G_END_DECLS
diff --git a/clutter/clutter-settings.c b/clutter/clutter-settings.c
index ffbc605..293f646 100644
--- a/clutter/clutter-settings.c
+++ b/clutter/clutter-settings.c
@@ -690,37 +690,21 @@ _clutter_settings_set_backend (ClutterSettings *settings,
#define SETTINGS_GROUP "Settings"
void
-_clutter_settings_read_from_file (ClutterSettings *settings,
- const gchar *file)
+_clutter_settings_read_from_key_file (ClutterSettings *settings,
+ GKeyFile *keyfile)
{
GObjectClass *settings_class;
GObject *settings_obj;
GParamSpec **pspecs;
- GKeyFile *keyfile;
- GError *error;
guint n_pspecs, i;
- error = NULL;
- keyfile = g_key_file_new ();
- g_key_file_load_from_file (keyfile, file, G_KEY_FILE_NONE, &error);
- if (error != NULL)
- {
- g_critical ("Unable to read configuration from '%s': %s",
- file,
- error->message);
- g_error_free (error);
- goto out;
- }
-
if (!g_key_file_has_group (keyfile, SETTINGS_GROUP))
- goto out;
+ return;
settings_obj = G_OBJECT (settings);
settings_class = G_OBJECT_GET_CLASS (settings);
pspecs = g_object_class_list_properties (settings_class, &n_pspecs);
- CLUTTER_NOTE (BACKEND, "Reading settings from '%s'", file);
-
for (i = 0; i < n_pspecs; i++)
{
GParamSpec *pspec = pspecs[i];
@@ -790,9 +774,8 @@ _clutter_settings_read_from_file (ClutterSettings *settings,
key_error->domain != G_KEY_FILE_ERROR &&
key_error->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND)
{
- g_critical ("Unable to read the value for setting '%s' in '%s': %s",
+ g_critical ("Unable to read the value for setting '%s': %s",
p_name,
- file,
key_error->message);
}
@@ -805,7 +788,4 @@ _clutter_settings_read_from_file (ClutterSettings *settings,
}
g_free (pspecs);
-
-out:
- g_key_file_free (keyfile);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]