diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2015-12-11 15:41:35 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2015-12-11 15:53:24 +0000 |
commit | e9b5eb3045d335b6ebbfc7443076754447447065 (patch) | |
tree | 9619e94700a86d4c085b523a35e9959480948b48 | |
parent | cc31ed77bda37d2739fdc3137cb15eda51605c7b (diff) | |
download | clutter-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.h | 2 | ||||
-rw-r--r-- | clutter/clutter-backend.c | 7 | ||||
-rw-r--r-- | clutter/clutter-main.c | 11 |
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) |