devilhorns pushed a commit to branch master.

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

commit 7d5d06bb20b2842619785b034e6fa15b080a53b1
Author: Chris Michael <cp.mich...@samsung.com>
Date:   Wed May 13 14:37:35 2015 -0400

    ecore-drm: Only send output events when we enable/disable an output
    
    Summary: This reduces the number of output events that wl_drm module
    will receive from ecore-drm. We now only send those events when an
    output gets enabled/disabled where previously we were also sending
    them during output creation.
    
    @fix
    
    Signed-off-by: Chris Michael <cp.mich...@samsung.com>
---
 src/lib/ecore_drm/ecore_drm_output.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/lib/ecore_drm/ecore_drm_output.c 
b/src/lib/ecore_drm/ecore_drm_output.c
index e893ce9..8d922f8 100644
--- a/src/lib/ecore_drm/ecore_drm_output.c
+++ b/src/lib/ecore_drm/ecore_drm_output.c
@@ -425,6 +425,7 @@ _ecore_drm_output_create(Ecore_Drm_Device *dev, drmModeRes 
*res, drmModeConnecto
    output->name = eina_stringshare_add("UNKNOWN");
 
    output->connected = (conn->connection == DRM_MODE_CONNECTED);
+   output->enabled = output->connected;
    output->conn_type = conn->connector_type;
    if (conn->connector_type < ALEN(conn_types))
      type = conn_types[conn->connector_type];
@@ -535,8 +536,6 @@ _ecore_drm_output_create(Ecore_Drm_Device *dev, drmModeRes 
*res, drmModeConnecto
             (conn->count_modes == 0) ? ", built-in" : "");
      }
 
-   _ecore_drm_output_event_send(output, EINA_TRUE);
-
    return output;
 
 err:
@@ -963,6 +962,9 @@ ecore_drm_output_enable(Ecore_Drm_Output *output)
    if (output->enabled) return EINA_TRUE;
 
    output->enabled = EINA_TRUE;
+   ecore_drm_output_dpms_set(output, DRM_MODE_DPMS_ON);
+
+   _ecore_drm_output_event_send(output, EINA_TRUE);
 
    return EINA_TRUE;
 }
@@ -975,6 +977,9 @@ ecore_drm_output_disable(Ecore_Drm_Output *output)
    if (!output->enabled) return;
 
    output->enabled = EINA_FALSE;
+   ecore_drm_output_dpms_set(output, DRM_MODE_DPMS_OFF);
+
+   _ecore_drm_output_event_send(output, EINA_FALSE);
 }
 
 EAPI void 
@@ -997,6 +1002,8 @@ ecore_drm_output_repaint(Ecore_Drm_Output *output)
    EINA_SAFETY_ON_NULL_RETURN(output->dev);
    EINA_SAFETY_ON_TRUE_RETURN(output->pending_destroy);
 
+   if (!output->enabled) return;
+
    dev = output->dev;
 
    /* DBG("Output Repaint: %d %d", output->crtc_id, output->conn_id); */
@@ -1101,7 +1108,7 @@ ecore_drm_outputs_geometry_get(Ecore_Drm_Device *dev, int 
*x, int *y, int *w, in
 
    EINA_LIST_FOREACH(dev->outputs, l, output)
      {
-        if (!output->connected) continue;
+        if ((!output->connected) || (!output->enabled)) continue;
         if (output->cloned) continue;
         ow += MAX(ow, output->current_mode->width);
         oh = MAX(oh, output->current_mode->height);

-- 


Reply via email to