ecore-drm2: Fix atomic dpms setting (round 2)
As it turns out, we still need to enable/disable the output crtc when we enable/disable dpms in order for the screen itself to turn off, so this patch "should" finally fix atomic dpms setting. @fix Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
b8336030ea
commit
7a3c658759
|
@ -417,6 +417,7 @@ static Eina_Bool
|
||||||
_output_dpms_atomic_set(Ecore_Drm2_Output *output, int level)
|
_output_dpms_atomic_set(Ecore_Drm2_Output *output, int level)
|
||||||
{
|
{
|
||||||
Ecore_Drm2_Connector_State *cstate;
|
Ecore_Drm2_Connector_State *cstate;
|
||||||
|
Ecore_Drm2_Crtc_State *rstate;
|
||||||
drmModeAtomicReq *req = NULL;
|
drmModeAtomicReq *req = NULL;
|
||||||
Eina_Bool ret = EINA_TRUE;
|
Eina_Bool ret = EINA_TRUE;
|
||||||
|
|
||||||
|
@ -426,6 +427,7 @@ _output_dpms_atomic_set(Ecore_Drm2_Output *output, int level)
|
||||||
sym_drmModeAtomicSetCursor(req, 0);
|
sym_drmModeAtomicSetCursor(req, 0);
|
||||||
|
|
||||||
cstate = output->conn_state;
|
cstate = output->conn_state;
|
||||||
|
rstate = output->crtc_state;
|
||||||
|
|
||||||
if (sym_drmModeAtomicAddProperty(req, cstate->obj_id,
|
if (sym_drmModeAtomicAddProperty(req, cstate->obj_id,
|
||||||
cstate->dpms.id, level) < 0)
|
cstate->dpms.id, level) < 0)
|
||||||
|
@ -435,6 +437,15 @@ _output_dpms_atomic_set(Ecore_Drm2_Output *output, int level)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sym_drmModeAtomicAddProperty(req, rstate->obj_id,
|
||||||
|
rstate->active.id,
|
||||||
|
((level == 0) ? 1 : 0)) < 0)
|
||||||
|
{
|
||||||
|
ERR("Failed to add crtc active property");
|
||||||
|
ret = EINA_FALSE;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
if (sym_drmModeAtomicCommit(output->fd, req, 0, NULL))
|
if (sym_drmModeAtomicCommit(output->fd, req, 0, NULL))
|
||||||
{
|
{
|
||||||
ERR("Could not set dpms property: %m");
|
ERR("Could not set dpms property: %m");
|
||||||
|
@ -442,6 +453,10 @@ _output_dpms_atomic_set(Ecore_Drm2_Output *output, int level)
|
||||||
}
|
}
|
||||||
|
|
||||||
cstate->dpms.value = level;
|
cstate->dpms.value = level;
|
||||||
|
if (level == 0)
|
||||||
|
rstate->active.value = 1;
|
||||||
|
else
|
||||||
|
rstate->active.value = 0;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
sym_drmModeAtomicFree(req);
|
sym_drmModeAtomicFree(req);
|
||||||
|
|
Loading…
Reference in New Issue