devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c4461ac5d80508da2e542026d7578df2e7390b7b
commit c4461ac5d80508da2e542026d7578df2e7390b7b Author: Chris Michael <cp.mich...@samsung.com> Date: Mon May 4 14:13:21 2015 -0400 ecore-drm: Add API function to return output connected state Summary: This adds a new API function to check if a given output is connected or not. @feature Signed-off-by: Chris Michael <cp.mich...@samsung.com> --- src/lib/ecore_drm/Ecore_Drm.h | 12 ++++++++++++ src/lib/ecore_drm/ecore_drm_output.c | 12 +++++++++++- src/lib/ecore_drm/ecore_drm_private.h | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h index 54e252e..e5c2972 100644 --- a/src/lib/ecore_drm/Ecore_Drm.h +++ b/src/lib/ecore_drm/Ecore_Drm.h @@ -788,6 +788,18 @@ EAPI const Eina_List *ecore_drm_devices_get(void); */ EAPI void ecore_drm_screen_size_range_get(Ecore_Drm_Device *dev, int *minw, int *minh, int *maxw, int *maxh); +/** + * Get if a given output is connected + * + * @param output The Ecore_Drm_Output to get the connected status of + * + * @return EINA_TRUE if output is connected, EINA_FALSE otherwise + * + * @ingroup Ecore_Drm_Output_Group + * @since 1.15 + */ +EAPI Eina_Bool ecore_drm_output_connected_get(Ecore_Drm_Output *output); + #ifdef __cplusplus } #endif diff --git a/src/lib/ecore_drm/ecore_drm_output.c b/src/lib/ecore_drm/ecore_drm_output.c index 614abea..f04a890 100644 --- a/src/lib/ecore_drm/ecore_drm_output.c +++ b/src/lib/ecore_drm/ecore_drm_output.c @@ -754,13 +754,15 @@ ecore_drm_outputs_create(Ecore_Drm_Device *dev) if (!(conn = drmModeGetConnector(dev->drm.fd, res->connectors[i]))) continue; - if (conn->connection != DRM_MODE_CONNECTED) goto next; + /* if (conn->connection != DRM_MODE_CONNECTED) goto next; */ /* create output for this connector */ if (!(output = _ecore_drm_output_create(dev, res, conn, x, y, EINA_FALSE))) goto next; + output->connected = (conn->connection == DRM_MODE_CONNECTED); + x += output->current_mode->width; next: @@ -1099,3 +1101,11 @@ ecore_drm_output_name_get(Ecore_Drm_Output *output) return strdup(output->name); } + +EAPI Eina_Bool +ecore_drm_output_connected_get(Ecore_Drm_Output *output) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE); + + return output->connected; +} diff --git a/src/lib/ecore_drm/ecore_drm_private.h b/src/lib/ecore_drm/ecore_drm_private.h index 75e103a..c7b9c2f 100644 --- a/src/lib/ecore_drm/ecore_drm_private.h +++ b/src/lib/ecore_drm/ecore_drm_private.h @@ -140,6 +140,7 @@ struct _Ecore_Drm_Output Ecore_Drm_Backlight *backlight; + Eina_Bool connected : 1; Eina_Bool enabled : 1; Eina_Bool cloned : 1; Eina_Bool need_repaint : 1; --