summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2016-09-22 12:01:38 -0400
committerChris Michael <cp.michael@samsung.com>2016-09-22 14:20:24 -0400
commita76eae227a534b8bb98ace2402f7e17f03ad930e (patch)
treeafd8d0589f4e2f7b6e20d52842652c4dce9c1d87
parent3ca7e72bceb120b1a48d3b664824082b4ba7560c (diff)
downloadefl-a76eae227a534b8bb98ace2402f7e17f03ad930e.tar.gz
ecore-drm2: Add code to setup Connector Atomic state for Outputs
Signed-off-by: Chris Michael <cp.michael@samsung.com>
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_outputs.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/lib/ecore_drm2/ecore_drm2_outputs.c b/src/lib/ecore_drm2/ecore_drm2_outputs.c
index d478d03300..99b268b55a 100644
--- a/src/lib/ecore_drm2/ecore_drm2_outputs.c
+++ b/src/lib/ecore_drm2/ecore_drm2_outputs.c
@@ -554,6 +554,35 @@ _output_crtc_state_get(Ecore_Drm2_Atomic_State *state, unsigned int id)
return NULL;
}
+
+static Ecore_Drm2_Connector_State *
+_atomic_state_conn_duplicate(Ecore_Drm2_Connector_State *state)
+{
+ Ecore_Drm2_Connector_State *cstate;
+
+ cstate = calloc(1, sizeof(Ecore_Drm2_Connector_State));
+ if (!cstate) return NULL;
+
+ memcpy(cstate, state, sizeof(Ecore_Drm2_Connector_State));
+
+ return cstate;
+}
+
+static Ecore_Drm2_Connector_State *
+_output_conn_state_get(Ecore_Drm2_Atomic_State *state, unsigned int id)
+{
+ Ecore_Drm2_Connector_State *cstate;
+ int i = 0;
+
+ for (; i < state->conns; i++)
+ {
+ cstate = &state->conn_states[i];
+ if (cstate->obj_id != id) continue;
+ return _atomic_state_conn_duplicate(cstate);
+ }
+
+ return NULL;
+}
#endif
static Eina_Bool
@@ -624,6 +653,8 @@ _output_create(Ecore_Drm2_Device *dev, const drmModeRes *res, const drmModeConne
{
output->crtc_state =
_output_crtc_state_get(dev->state, output->crtc_id);
+ output->conn_state =
+ _output_conn_state_get(dev->state, output->conn_id);
}
else
#endif