Add API to restrict the windowing backend to load
In situations when the default backend would fail (for example when compiled with X11 support but run without DISPLAY), or when the application is using backend specific code, it makes sense to let the application choose the backend explicitly. https://bugzilla.gnome.org/show_bug.cgi?id=707869
This commit is contained in:
@ -1390,53 +1390,6 @@ _clutter_context_is_initialized (void)
|
||||
return ClutterCntx->is_initialized;
|
||||
}
|
||||
|
||||
static ClutterBackend *
|
||||
clutter_create_backend (void)
|
||||
{
|
||||
const char *backend = g_getenv ("CLUTTER_BACKEND");
|
||||
ClutterBackend *retval = NULL;
|
||||
|
||||
if (backend != NULL)
|
||||
backend = g_intern_string (backend);
|
||||
|
||||
#ifdef CLUTTER_WINDOWING_OSX
|
||||
if (backend == NULL || backend == I_(CLUTTER_WINDOWING_OSX))
|
||||
retval = g_object_new (CLUTTER_TYPE_BACKEND_OSX, NULL);
|
||||
else
|
||||
#endif
|
||||
#ifdef CLUTTER_WINDOWING_WIN32
|
||||
if (backend == NULL || backend == I_(CLUTTER_WINDOWING_WIN32))
|
||||
retval = g_object_new (CLUTTER_TYPE_BACKEND_WIN32, NULL);
|
||||
else
|
||||
#endif
|
||||
#ifdef CLUTTER_WINDOWING_X11
|
||||
if (backend == NULL || backend == I_(CLUTTER_WINDOWING_X11))
|
||||
retval = g_object_new (CLUTTER_TYPE_BACKEND_X11, NULL);
|
||||
else
|
||||
#endif
|
||||
#ifdef CLUTTER_WINDOWING_WAYLAND
|
||||
if (backend == NULL || backend == I_(CLUTTER_WINDOWING_WAYLAND))
|
||||
retval = g_object_new (CLUTTER_TYPE_BACKEND_WAYLAND, NULL);
|
||||
else
|
||||
#endif
|
||||
#ifdef CLUTTER_WINDOWING_EGL
|
||||
if (backend == NULL || backend == I_(CLUTTER_WINDOWING_EGL))
|
||||
retval = g_object_new (CLUTTER_TYPE_BACKEND_EGL_NATIVE, NULL);
|
||||
else
|
||||
#endif
|
||||
#ifdef CLUTTER_WINDOWING_GDK
|
||||
if (backend == NULL || backend == I_(CLUTTER_WINDOWING_GDK))
|
||||
retval = g_object_new (CLUTTER_TYPE_BACKEND_GDK, NULL);
|
||||
else
|
||||
#endif
|
||||
if (backend == NULL)
|
||||
g_error ("No default Clutter backend found.");
|
||||
else
|
||||
g_error ("Unsupported Clutter backend: '%s'", backend);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
static ClutterMainContext *
|
||||
clutter_context_get_default_unlocked (void)
|
||||
{
|
||||
@ -1449,7 +1402,7 @@ clutter_context_get_default_unlocked (void)
|
||||
ctx->is_initialized = FALSE;
|
||||
|
||||
/* create the windowing system backend */
|
||||
ctx->backend = clutter_create_backend ();
|
||||
ctx->backend = _clutter_create_backend ();
|
||||
|
||||
/* create the default settings object, and store a back pointer to
|
||||
* the backend singleton
|
||||
|
Reference in New Issue
Block a user