mirror of
https://github.com/brl/mutter.git
synced 2024-12-24 20:12:06 +00:00
[eglx] Update the EGLX backend
The EGLX backend needs to be updated to the new ClutterBackendX11 code. Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
This commit is contained in:
parent
2ab9bef587
commit
13e055a351
@ -262,11 +262,53 @@ clutter_backend_egl_create_stage (ClutterBackend *backend,
|
|||||||
return stage;
|
return stage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static XVisualInfo *
|
||||||
|
clutter_backend_egl_get_visual_info (ClutterBackendX11 *backend_x11,
|
||||||
|
gboolean for_offscreen)
|
||||||
|
{
|
||||||
|
EGLint visualId;
|
||||||
|
int i,nxvisuals;
|
||||||
|
XVisualInfo *visual_list, *visinfo = None;
|
||||||
|
XVisualInfo visual_template;
|
||||||
|
ClutterBackendEGL *backend_egl = CLUTTER_BACKEND_EGL (backend_x11);
|
||||||
|
|
||||||
|
/* Find all the visuals in the screen */
|
||||||
|
nxvisuals = 0;
|
||||||
|
visual_template.screen = backend_x11->xscreen_num;
|
||||||
|
visual_list = XGetVisualInfo (backend_x11->xdpy, VisualScreenMask,
|
||||||
|
&visual_template,
|
||||||
|
&nxvisuals);
|
||||||
|
if (!visual_list)
|
||||||
|
return None;
|
||||||
|
|
||||||
|
/*get xvisual id*/
|
||||||
|
eglGetConfigAttrib (backend_egl->edpy, backend_egl->egl_config,
|
||||||
|
EGL_NATIVE_VISUAL_ID, &visualId);
|
||||||
|
|
||||||
|
/* look up the xvisual matching with egl native visual id*/
|
||||||
|
for( i = 0; i < nxvisuals; i++)
|
||||||
|
{
|
||||||
|
if (visual_list[i].visualid == visualId)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i < nxvisuals)
|
||||||
|
{
|
||||||
|
visinfo = (XVisualInfo*) Xalloc (sizeof (XVisualInfo));
|
||||||
|
*visinfo = visual_list[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
XFree (visual_list);
|
||||||
|
|
||||||
|
return visinfo;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_backend_egl_class_init (ClutterBackendEGLClass *klass)
|
clutter_backend_egl_class_init (ClutterBackendEGLClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
ClutterBackendClass *backend_class = CLUTTER_BACKEND_CLASS (klass);
|
ClutterBackendClass *backend_class = CLUTTER_BACKEND_CLASS (klass);
|
||||||
|
ClutterBackendX11Class *backendx11_class = CLUTTER_BACKEND_X11_CLASS (klass);
|
||||||
|
|
||||||
gobject_class->constructor = clutter_backend_egl_constructor;
|
gobject_class->constructor = clutter_backend_egl_constructor;
|
||||||
gobject_class->dispose = clutter_backend_egl_dispose;
|
gobject_class->dispose = clutter_backend_egl_dispose;
|
||||||
@ -277,6 +319,7 @@ clutter_backend_egl_class_init (ClutterBackendEGLClass *klass)
|
|||||||
backend_class->get_features = clutter_backend_egl_get_features;
|
backend_class->get_features = clutter_backend_egl_get_features;
|
||||||
backend_class->create_stage = clutter_backend_egl_create_stage;
|
backend_class->create_stage = clutter_backend_egl_create_stage;
|
||||||
backend_class->ensure_context = clutter_backend_egl_ensure_context;
|
backend_class->ensure_context = clutter_backend_egl_ensure_context;
|
||||||
|
backendx11_class->get_visual_info = clutter_backend_egl_get_visual_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -53,6 +53,7 @@ struct _ClutterBackendEGL
|
|||||||
EGLDisplay edpy;
|
EGLDisplay edpy;
|
||||||
EGLSurface egl_surface;
|
EGLSurface egl_surface;
|
||||||
EGLContext egl_context;
|
EGLContext egl_context;
|
||||||
|
EGLConfig egl_config;
|
||||||
|
|
||||||
gint egl_version_major;
|
gint egl_version_major;
|
||||||
gint egl_version_minor;
|
gint egl_version_minor;
|
||||||
|
@ -101,7 +101,7 @@ clutter_stage_egl_realize (ClutterActor *actor)
|
|||||||
EGL_RED_SIZE, 5,
|
EGL_RED_SIZE, 5,
|
||||||
EGL_GREEN_SIZE, 6,
|
EGL_GREEN_SIZE, 6,
|
||||||
EGL_BLUE_SIZE, 5,
|
EGL_BLUE_SIZE, 5,
|
||||||
|
EGL_STENCIL_SIZE, 8,
|
||||||
#ifdef HAVE_COGL_GLES2
|
#ifdef HAVE_COGL_GLES2
|
||||||
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
||||||
#else /* HAVE_COGL_GLES2 */
|
#else /* HAVE_COGL_GLES2 */
|
||||||
@ -248,7 +248,7 @@ clutter_stage_egl_realize (ClutterActor *actor)
|
|||||||
g_critical ("Unable to create a suitable EGL context");
|
g_critical ("Unable to create a suitable EGL context");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
backend_egl->egl_config = configs[0];
|
||||||
CLUTTER_NOTE (GL, "Created EGL Context");
|
CLUTTER_NOTE (GL, "Created EGL Context");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user