mirror of
https://github.com/brl/mutter.git
synced 2025-02-18 06:04:10 +00:00
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
This commit is contained in:
parent
f5eee5aec7
commit
372b39fd63
@ -216,22 +216,175 @@ clutter_threads_init_default (void)
|
|||||||
clutter_threads_unlock = clutter_threads_impl_unlock;
|
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
|
static void
|
||||||
clutter_config_read (void)
|
clutter_config_read (void)
|
||||||
{
|
{
|
||||||
ClutterSettings *settings;
|
|
||||||
gchar *config_path;
|
gchar *config_path;
|
||||||
|
|
||||||
settings = clutter_settings_get_default ();
|
|
||||||
|
|
||||||
config_path = g_build_filename (CLUTTER_SYSCONFDIR,
|
config_path = g_build_filename (CLUTTER_SYSCONFDIR,
|
||||||
"clutter-1.0",
|
"clutter-1.0",
|
||||||
"settings.ini",
|
"settings.ini",
|
||||||
NULL);
|
NULL);
|
||||||
if (g_file_test (config_path, G_FILE_TEST_EXISTS))
|
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);
|
g_free (config_path);
|
||||||
|
|
||||||
@ -240,7 +393,7 @@ clutter_config_read (void)
|
|||||||
"settings.ini",
|
"settings.ini",
|
||||||
NULL);
|
NULL);
|
||||||
if (g_file_test (config_path, G_FILE_TEST_EXISTS))
|
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);
|
g_free (config_path);
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,8 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
void _clutter_settings_set_backend (ClutterSettings *settings,
|
void _clutter_settings_set_backend (ClutterSettings *settings,
|
||||||
ClutterBackend *backend);
|
ClutterBackend *backend);
|
||||||
void _clutter_settings_read_from_file (ClutterSettings *settings,
|
void _clutter_settings_read_from_key_file (ClutterSettings *settings,
|
||||||
const gchar *file);
|
GKeyFile *key_file);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -690,37 +690,21 @@ _clutter_settings_set_backend (ClutterSettings *settings,
|
|||||||
#define SETTINGS_GROUP "Settings"
|
#define SETTINGS_GROUP "Settings"
|
||||||
|
|
||||||
void
|
void
|
||||||
_clutter_settings_read_from_file (ClutterSettings *settings,
|
_clutter_settings_read_from_key_file (ClutterSettings *settings,
|
||||||
const gchar *file)
|
GKeyFile *keyfile)
|
||||||
{
|
{
|
||||||
GObjectClass *settings_class;
|
GObjectClass *settings_class;
|
||||||
GObject *settings_obj;
|
GObject *settings_obj;
|
||||||
GParamSpec **pspecs;
|
GParamSpec **pspecs;
|
||||||
GKeyFile *keyfile;
|
|
||||||
GError *error;
|
|
||||||
guint n_pspecs, i;
|
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))
|
if (!g_key_file_has_group (keyfile, SETTINGS_GROUP))
|
||||||
goto out;
|
return;
|
||||||
|
|
||||||
settings_obj = G_OBJECT (settings);
|
settings_obj = G_OBJECT (settings);
|
||||||
settings_class = G_OBJECT_GET_CLASS (settings);
|
settings_class = G_OBJECT_GET_CLASS (settings);
|
||||||
pspecs = g_object_class_list_properties (settings_class, &n_pspecs);
|
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++)
|
for (i = 0; i < n_pspecs; i++)
|
||||||
{
|
{
|
||||||
GParamSpec *pspec = 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->domain != G_KEY_FILE_ERROR &&
|
||||||
key_error->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND)
|
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,
|
p_name,
|
||||||
file,
|
|
||||||
key_error->message);
|
key_error->message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -805,7 +788,4 @@ _clutter_settings_read_from_file (ClutterSettings *settings,
|
|||||||
}
|
}
|
||||||
|
|
||||||
g_free (pspecs);
|
g_free (pspecs);
|
||||||
|
|
||||||
out:
|
|
||||||
g_key_file_free (keyfile);
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user