summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2015-12-11 15:41:35 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2015-12-11 15:53:24 +0000
commite9b5eb3045d335b6ebbfc7443076754447447065 (patch)
tree9619e94700a86d4c085b523a35e9959480948b48
parentcc31ed77bda37d2739fdc3137cb15eda51605c7b (diff)
downloadclutter-e9b5eb3045d335b6ebbfc7443076754447447065.tar.gz
Allow setting the default backend from the configuration file
We should allow a configuration file to set up the initial state of the global state, which also implies being able to set the backend. If the allowed backends have already been set programmatically via the clutter_set_windowing_backend(), though, then the application code takes precedence, as we assume that the application author knows better than us what their code supports or requires.
-rw-r--r--clutter/clutter-backend-private.h2
-rw-r--r--clutter/clutter-backend.c7
-rw-r--r--clutter/clutter-main.c11
3 files changed, 20 insertions, 0 deletions
diff --git a/clutter/clutter-backend-private.h b/clutter/clutter-backend-private.h
index eb44941da..a2b729c2e 100644
--- a/clutter/clutter-backend-private.h
+++ b/clutter/clutter-backend-private.h
@@ -155,6 +155,8 @@ void _clutter_backend_reset_cogl_framebuffer (Clutter
void clutter_set_allowed_drivers (const char *drivers);
+void clutter_try_set_windowing_backend (const char *drivers);
+
G_END_DECLS
#endif /* __CLUTTER_BACKEND_PRIVATE_H__ */
diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c
index a29976ac2..bce4e9138 100644
--- a/clutter/clutter-backend.c
+++ b/clutter/clutter-backend.c
@@ -1527,6 +1527,13 @@ clutter_set_windowing_backend (const char *backend_type)
allowed_backends = g_strdup (backend_type);
}
+void
+clutter_try_set_windowing_backend (const char *backend_type)
+{
+ if (allowed_backends == NULL)
+ clutter_set_windowing_backend (backend_type);
+}
+
PangoDirection
_clutter_backend_get_keymap_direction (ClutterBackend *backend)
{
diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
index d1cf4f0ca..10fcc2085 100644
--- a/clutter/clutter-main.c
+++ b/clutter/clutter-main.c
@@ -223,6 +223,17 @@ clutter_config_read_from_key_file (GKeyFile *keyfile)
str_value =
g_key_file_get_string (keyfile, ENVIRONMENT_GROUP,
+ "Backends",
+ &key_error);
+ if (key_error != NULL)
+ g_clear_error (&key_error);
+ else
+ clutter_try_set_windowing_backend (str_value);
+
+ g_free (str_value);
+
+ str_value =
+ g_key_file_get_string (keyfile, ENVIRONMENT_GROUP,
"Drivers",
&key_error);
if (key_error != NULL)