devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a26262928272a901e129e236970981c72a35960d

commit a26262928272a901e129e236970981c72a35960d
Author: Chris Michael <cp.mich...@samsung.com>
Date:   Thu Sep 22 12:28:07 2016 -0400

    ecore-drm2: Add code to use Atomic for Edid if available
    
    Signed-off-by: Chris Michael <cp.mich...@samsung.com>
---
 src/lib/ecore_drm2/ecore_drm2_outputs.c | 40 ++++++++++++++++++++++++++++++---
 1 file changed, 37 insertions(+), 3 deletions(-)

diff --git a/src/lib/ecore_drm2/ecore_drm2_outputs.c 
b/src/lib/ecore_drm2/ecore_drm2_outputs.c
index 28d0400..ebb8319 100644
--- a/src/lib/ecore_drm2/ecore_drm2_outputs.c
+++ b/src/lib/ecore_drm2/ecore_drm2_outputs.c
@@ -189,6 +189,28 @@ _output_edid_parse(Ecore_Drm2_Output *output, const 
uint8_t *data, size_t len)
    return 0;
 }
 
+#ifdef HAVE_ATOMIC_DRM
+static void
+_output_edid_atomic_find(Ecore_Drm2_Output *output)
+{
+   Ecore_Drm2_Connector_State *cstate;
+   int ret = 0;
+
+   cstate = output->conn_state;
+
+   ret = _output_edid_parse(output, cstate->edid.data, cstate->edid.len);
+   if (!ret)
+     {
+        if (output->edid.pnp[0] != '\0')
+          eina_stringshare_replace(&output->make, output->edid.pnp);
+        if (output->edid.monitor[0] != '\0')
+          eina_stringshare_replace(&output->model, output->edid.monitor);
+        if (output->edid.serial[0] != '\0')
+          eina_stringshare_replace(&output->serial, output->edid.serial);
+     }
+}
+#endif
+
 static void
 _output_edid_find(Ecore_Drm2_Output *output, const drmModeConnector *conn)
 {
@@ -700,7 +722,12 @@ _output_create(Ecore_Drm2_Device *dev, const drmModeRes 
*res, const drmModeConne
 
    _output_modes_create(dev, output, conn);
 
-   _output_edid_find(output, conn);
+#ifdef HAVE_ATOMIC_DRM
+   if (_ecore_drm2_use_atomic)
+     _output_edid_atomic_find(output);
+   else
+#endif
+     _output_edid_find(output, conn);
 
    if (output->connected) output->enabled = EINA_TRUE;
 
@@ -960,9 +987,16 @@ ecore_drm2_output_edid_get(Ecore_Drm2_Output *output)
    unsigned char *blob;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(output, NULL);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(output->edid.blob, NULL);
 
-   blob = output->edid.blob;
+#ifdef HAVE_ATOMIC_DRM
+   if (_ecore_drm2_use_atomic)
+     blob = output->conn_state->edid.data;
+   else
+#endif
+     {
+        EINA_SAFETY_ON_NULL_RETURN_VAL(output->edid.blob, NULL);
+        blob = output->edid.blob;
+     }
 
    edid_str = malloc((128 * 2) + 1);
    if (edid_str)

-- 


Reply via email to