ecore-evas-drm: Update ecore_evas_drm for recent evas gl_drm changes

Summary: Previous Ecore_Evas drm code would create the gbm device and
surface inside the gl_drm function. As these are now handled inside
the evas-gl-drm engine itself, this code is not needed here.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
Chris Michael 2015-06-03 12:57:59 -04:00
parent ee593050f1
commit 39c28cbe8e
1 changed files with 27 additions and 14 deletions

View File

@ -360,6 +360,12 @@ ecore_evas_gl_drm_new_internal(const char *device, unsigned int parent EINA_UNUS
/* try to init drm */
if (_ecore_evas_drm_init(device) < 1) return NULL;
if (!ecore_drm_device_software_setup(dev))
{
ERR("Could not setup device for software");
goto soft_err;
}
/* try to load gl libary, gbm libary */
/* Typically, gbm loads the dri driver However some versions of Mesa
* do not have libglapi symbols linked in the driver. Because of this,
@ -427,9 +433,16 @@ ecore_evas_gl_drm_new_internal(const char *device, unsigned int parent EINA_UNUS
evas_data_attach_set(ee->evas, ee);
evas_output_method_set(ee->evas, method);
/* FIXME: Support initial rotation ?? */
evas_output_size_set(ee->evas, w, h);
evas_output_viewport_set(ee->evas, 0, 0, w, h);
if ((ee->rotation == 90) || (ee->rotation == 270))
{
evas_output_size_set(ee->evas, h, w);
evas_output_viewport_set(ee->evas, 0, 0, h, w);
}
else
{
evas_output_size_set(ee->evas, w, h);
evas_output_viewport_set(ee->evas, 0, 0, w, h);
}
if (ee->can_async_render)
evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST,
@ -437,6 +450,8 @@ ecore_evas_gl_drm_new_internal(const char *device, unsigned int parent EINA_UNUS
if ((einfo = (Evas_Engine_Info_GL_Drm *)evas_engine_info_get(ee->evas)))
{
Ecore_Drm_Output *output;
einfo->info.depth = 32;
einfo->info.destination_alpha = ee->alpha;
einfo->info.rotation = ee->rotation;
@ -444,24 +459,22 @@ ecore_evas_gl_drm_new_internal(const char *device, unsigned int parent EINA_UNUS
if ((num = getenv("EVAS_DRM_VSYNC")))
{
if (!atoi(num))
einfo->vsync = EINA_FALSE;
einfo->info.vsync = EINA_FALSE;
else
einfo->vsync = EINA_TRUE;
einfo->info.vsync = EINA_TRUE;
}
else
einfo->vsync = EINA_TRUE;
einfo->info.vsync = EINA_TRUE;
einfo->info.fd = ecore_drm_device_fd_get(dev);
einfo->info.dev = dev;
einfo->info.format = format;
einfo->info.flags = flags;
if (einfo->info.fd)
einfo->info.gbm = gbm_create_device(einfo->info.fd);
if (einfo->info.gbm)
if ((output = ecore_drm_device_output_find(dev, x, y)))
{
einfo->info.surface =
gbm_surface_create(einfo->info.gbm, w, h, format, flags);
einfo->info.conn_id = ecore_drm_output_connector_id_get(output);
einfo->info.crtc_id = ecore_drm_output_crtc_id_get(output);
einfo->info.buffer_id = ecore_drm_output_crtc_buffer_get(output);
}
if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
@ -476,7 +489,7 @@ ecore_evas_gl_drm_new_internal(const char *device, unsigned int parent EINA_UNUS
goto eng_err;
}
ee->prop.window = einfo->info.output;
ee->prop.window = einfo->info.buffer_id;
_ecore_evas_register(ee);
ecore_evas_input_event_register(ee);
@ -497,9 +510,9 @@ ecore_evas_gl_drm_new_internal(const char *device, unsigned int parent EINA_UNUS
eng_err:
ecore_evas_free(ee);
soft_err:
ee_err:
_ecore_evas_drm_shutdown();
return NULL;
}
#endif