backend: try gdk backend before x11/wayland/egl

Quite a few people at Guadec complained of pinpoint being broken in
speaker+fullscreen mode, with slides being half displayed. It turns
out that the X11 backend of clutter was being used and this backend
assumes the size of the current monitor is the size of the X screen
(that's not the case with multiple monitors).

To work around the shortcomings of the X11 backend we should probably
position the GDK one before. GDK implements most of the logic the
ClutterStage needs and is probably more tested.

https://bugzilla.gnome.org/show_bug.cgi?id=734587
This commit is contained in:
Lionel Landwerlin 2014-08-10 20:19:30 +01:00
parent f95493e7bf
commit 398a7ac713

View File

@ -491,6 +491,11 @@ _clutter_create_backend (void)
retval = g_object_new (CLUTTER_TYPE_BACKEND_WIN32, NULL); retval = g_object_new (CLUTTER_TYPE_BACKEND_WIN32, NULL);
else else
#endif #endif
#ifdef CLUTTER_WINDOWING_GDK
if (backend == NULL || backend == I_(CLUTTER_WINDOWING_GDK))
retval = g_object_new (CLUTTER_TYPE_BACKEND_GDK, NULL);
else
#endif
#ifdef CLUTTER_WINDOWING_X11 #ifdef CLUTTER_WINDOWING_X11
if (backend == NULL || backend == I_(CLUTTER_WINDOWING_X11)) if (backend == NULL || backend == I_(CLUTTER_WINDOWING_X11))
retval = g_object_new (CLUTTER_TYPE_BACKEND_X11, NULL); retval = g_object_new (CLUTTER_TYPE_BACKEND_X11, NULL);
@ -505,11 +510,6 @@ _clutter_create_backend (void)
if (backend == NULL || backend == I_(CLUTTER_WINDOWING_EGL)) if (backend == NULL || backend == I_(CLUTTER_WINDOWING_EGL))
retval = g_object_new (CLUTTER_TYPE_BACKEND_EGL_NATIVE, NULL); retval = g_object_new (CLUTTER_TYPE_BACKEND_EGL_NATIVE, NULL);
else 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 #endif
if (backend == NULL) if (backend == NULL)
g_error ("No default Clutter backend found."); g_error ("No default Clutter backend found.");