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 @@ -221,6 +221,17 @@ clutter_config_read_from_key_file (GKeyFile *keyfile) if (!g_key_file_has_group (keyfile, ENVIRONMENT_GROUP)) return; + 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",