diff options
author | Chris Michael <cp.michael@samsung.com> | 2016-09-22 12:01:38 -0400 |
---|---|---|
committer | Chris Michael <cp.michael@samsung.com> | 2016-09-22 14:20:24 -0400 |
commit | a76eae227a534b8bb98ace2402f7e17f03ad930e (patch) | |
tree | afd8d0589f4e2f7b6e20d52842652c4dce9c1d87 | |
parent | 3ca7e72bceb120b1a48d3b664824082b4ba7560c (diff) | |
download | efl-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.c | 31 |
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 |