MetaRendererNative: Get EGLDisplay on init
Use MetaEgl to get the EGLDisplay on initialization; use that when constructing the Cogl renderer. https://bugzilla.gnome.org/show_bug.cgi?id=773629
This commit is contained in:
parent
8b810193dd
commit
cde622b8e1
@ -82,6 +82,9 @@ struct _MetaRendererNative
|
|||||||
MetaRenderer parent;
|
MetaRenderer parent;
|
||||||
|
|
||||||
int kms_fd;
|
int kms_fd;
|
||||||
|
|
||||||
|
EGLDisplay egl_display;
|
||||||
|
|
||||||
struct gbm_device *gbm;
|
struct gbm_device *gbm;
|
||||||
CoglClosure *swap_notify_idle;
|
CoglClosure *swap_notify_idle;
|
||||||
|
|
||||||
@ -236,25 +239,7 @@ meta_renderer_native_connect (CoglRenderer *cogl_renderer,
|
|||||||
|
|
||||||
egl_renderer->platform_vtable = &_cogl_winsys_egl_vtable;
|
egl_renderer->platform_vtable = &_cogl_winsys_egl_vtable;
|
||||||
egl_renderer->platform = renderer_native;
|
egl_renderer->platform = renderer_native;
|
||||||
egl_renderer->edpy = EGL_NO_DISPLAY;
|
egl_renderer->edpy = renderer_native->egl_display;
|
||||||
|
|
||||||
if (renderer_native->gbm == NULL)
|
|
||||||
{
|
|
||||||
_cogl_set_error (error, COGL_WINSYS_ERROR,
|
|
||||||
COGL_WINSYS_ERROR_INIT,
|
|
||||||
"Couldn't create gbm device");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
egl_renderer->edpy =
|
|
||||||
eglGetDisplay ((EGLNativeDisplayType) renderer_native->gbm);
|
|
||||||
if (egl_renderer->edpy == EGL_NO_DISPLAY)
|
|
||||||
{
|
|
||||||
_cogl_set_error (error, COGL_WINSYS_ERROR,
|
|
||||||
COGL_WINSYS_ERROR_INIT,
|
|
||||||
"Couldn't get eglDisplay");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_cogl_winsys_egl_renderer_connect_common (cogl_renderer, error))
|
if (!_cogl_winsys_egl_renderer_connect_common (cogl_renderer, error))
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -1241,9 +1226,13 @@ meta_renderer_native_initable_init (GInitable *initable,
|
|||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
MetaRendererNative *renderer_native = META_RENDERER_NATIVE (initable);
|
MetaRendererNative *renderer_native = META_RENDERER_NATIVE (initable);
|
||||||
|
MetaBackend *backend = meta_get_backend ();
|
||||||
|
MetaEgl *egl = meta_backend_get_egl (backend);
|
||||||
|
struct gbm_device *gbm_device;
|
||||||
|
EGLDisplay egl_display;
|
||||||
|
|
||||||
renderer_native->gbm = gbm_create_device (renderer_native->kms_fd);
|
gbm_device = gbm_create_device (renderer_native->kms_fd);
|
||||||
if (!renderer_native->gbm)
|
if (!gbm_device)
|
||||||
{
|
{
|
||||||
g_set_error (error, G_IO_ERROR,
|
g_set_error (error, G_IO_ERROR,
|
||||||
G_IO_ERROR_FAILED,
|
G_IO_ERROR_FAILED,
|
||||||
@ -1251,6 +1240,17 @@ meta_renderer_native_initable_init (GInitable *initable,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
egl_display = meta_egl_get_display (egl, (EGLNativeDisplayType) gbm_device,
|
||||||
|
error);
|
||||||
|
if (egl_display == EGL_NO_DISPLAY)
|
||||||
|
{
|
||||||
|
gbm_device_destroy (gbm_device);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderer_native->egl_display = egl_display;
|
||||||
|
renderer_native->gbm = gbm_device;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user