From ca1a99a54236bd740c952fa4b222bbb2ecf5224e Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Thu, 9 Jun 2016 18:50:58 +0900 Subject: [PATCH] ecore_drm: do not use eeze udev for output and make output list only main output Change-Id: Icff557766a616c69739c7ac8d26925404a7c019e Signed-off-by: Junkyeong Kim --- src/lib/ecore_drm/ecore_drm_device.c | 12 ++++++------ src/lib/ecore_drm/ecore_drm_display.c | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/lib/ecore_drm/ecore_drm_device.c b/src/lib/ecore_drm/ecore_drm_device.c index 778ceb1..69fe1d3 100644 --- a/src/lib/ecore_drm/ecore_drm_device.c +++ b/src/lib/ecore_drm/ecore_drm_device.c @@ -123,7 +123,7 @@ _ecore_drm_device_cb_idle(void *data) return ECORE_CALLBACK_RENEW; } #endif - +#ifndef HAVE_TDM static void _ecore_drm_device_cb_output_event(const char *device EINA_UNUSED, Eeze_Udev_Event event EINA_UNUSED, void *data, Eeze_Udev_Watch *watch EINA_UNUSED) { @@ -132,7 +132,7 @@ _ecore_drm_device_cb_output_event(const char *device EINA_UNUSED, Eeze_Udev_Even if (!(dev = data)) return; _ecore_drm_outputs_update(dev); } - +#endif struct xkb_context * _ecore_drm_device_cached_context_get(enum xkb_context_flags flags) { @@ -337,7 +337,7 @@ EAPI Eina_Bool ecore_drm_device_open(Ecore_Drm_Device *dev) { #ifdef HAVE_TDM - int events = 0; + /*int events = 0;*/ /* check for valid device */ if ((!dev) || (!dev->drm.name)) return EINA_FALSE; @@ -381,14 +381,14 @@ ecore_drm_device_open(Ecore_Drm_Device *dev) TRACE_EFL_END(); return EINA_FALSE; } - +#if 0 events = (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE | EEZE_UDEV_EVENT_CHANGE); dev->watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_DRM, events, _ecore_drm_device_cb_output_event, dev); - +#endif TRACE_EFL_END(); return EINA_TRUE; @@ -401,7 +401,7 @@ ecore_drm_device_open(Ecore_Drm_Device *dev) if ((!dev) || (!dev->drm.name)) return EINA_FALSE; /* DRM device node is needed immediately to keep going. */ - dev->drm.fd = + dev->drm.fd = _ecore_drm_launcher_device_open_no_pending(dev->drm.name, O_RDWR); if (dev->drm.fd < 0) return EINA_FALSE; diff --git a/src/lib/ecore_drm/ecore_drm_display.c b/src/lib/ecore_drm/ecore_drm_display.c index d870f29..642d957 100644 --- a/src/lib/ecore_drm/ecore_drm_display.c +++ b/src/lib/ecore_drm/ecore_drm_display.c @@ -916,7 +916,7 @@ _ecore_drm_display_outputs_create(Ecore_Drm_Device *dev) dev->min_height = 0; dev->max_width = UINT32_MAX; dev->max_height = UINT32_MAX; - +#if 0 for (i = 0; i < count; i++) { if (!(output = _ecore_drm_display_output_create(dev, i, x, y, EINA_FALSE))) @@ -924,7 +924,10 @@ _ecore_drm_display_outputs_create(Ecore_Drm_Device *dev) x += output->current_mode->width; } - +#else + /* create only main output when init */ + output = _ecore_drm_display_output_create(dev, 0, x, y, EINA_FALSE); +#endif ret = EINA_TRUE; if (eina_list_count(dev->outputs) < 1) ret = EINA_FALSE; @@ -950,6 +953,9 @@ _ecore_drm_display_outputs_update(Ecore_Drm_Device *dev) hal_display = dev->hal_display; + err = tdm_display_update(hal_display->display); + EINA_SAFETY_ON_FALSE_RETURN(err == TDM_ERROR_NONE); + err = tdm_display_get_output_count(hal_display->display, &count); EINA_SAFETY_ON_FALSE_RETURN(err == TDM_ERROR_NONE); @@ -957,6 +963,7 @@ _ecore_drm_display_outputs_update(Ecore_Drm_Device *dev) for (i = 0; i < count; i++) { tdm_output_conn_status status = TDM_OUTPUT_CONN_STATUS_DISCONNECTED; + tdm_output_type type = TDM_OUTPUT_TYPE_Unknown; tdm_output *tdm_output_obj; tdm_output_obj = tdm_display_get_output(hal_display->display, i, &err); @@ -967,6 +974,11 @@ _ecore_drm_display_outputs_update(Ecore_Drm_Device *dev) err = tdm_output_get_conn_status(tdm_output_obj, &status); EINA_SAFETY_ON_FALSE_RETURN(err == TDM_ERROR_NONE); + err = tdm_output_get_output_type(tdm_output_obj, &type); + EINA_SAFETY_ON_FALSE_RETURN(err == TDM_ERROR_NONE); + + DBG("%s output type:%d, status:%d", __func__, type, status); + if (status == TDM_OUTPUT_CONN_STATUS_DISCONNECTED) { if (output) -- 2.7.4