diff --git a/src/lib/ecore_drm2/Ecore_Drm2.h b/src/lib/ecore_drm2/Ecore_Drm2.h index 822afa8833..ce940f2544 100644 --- a/src/lib/ecore_drm2/Ecore_Drm2.h +++ b/src/lib/ecore_drm2/Ecore_Drm2.h @@ -66,6 +66,7 @@ EAPI unsigned int ecore_drm2_display_connector_type_get(Ecore_Drm2_Display *disp EAPI unsigned int ecore_drm2_display_subpixel_get(Ecore_Drm2_Display *disp); EAPI void ecore_drm2_display_physical_size_get(Ecore_Drm2_Display *disp, int *w, int *h); EAPI int ecore_drm2_display_dpms_get(Ecore_Drm2_Display *disp); +EAPI void ecore_drm2_display_dpms_set(Ecore_Drm2_Display *disp, uint64_t level); EAPI Eina_Bool ecore_drm2_display_enabled_get(Ecore_Drm2_Display *disp); EAPI void ecore_drm2_display_enabled_set(Ecore_Drm2_Display *disp, Eina_Bool enabled); EAPI unsigned int ecore_drm2_display_crtc_get(Ecore_Drm2_Display *disp); diff --git a/src/lib/ecore_drm2/ecore_drm2_displays.c b/src/lib/ecore_drm2/ecore_drm2_displays.c index 581426429b..90cb06f442 100644 --- a/src/lib/ecore_drm2/ecore_drm2_displays.c +++ b/src/lib/ecore_drm2/ecore_drm2_displays.c @@ -670,6 +670,22 @@ ecore_drm2_display_dpms_get(Ecore_Drm2_Display *disp) return disp->conn->state.current->dpms.value; } +EAPI void +ecore_drm2_display_dpms_set(Ecore_Drm2_Display *disp, uint64_t level) +{ + Ecore_Drm2_Connector_State *cstate, *pstate; + + EINA_SAFETY_ON_NULL_RETURN(disp); + EINA_SAFETY_ON_NULL_RETURN(disp->conn); + + cstate = disp->conn->state.current; + if (cstate->dpms.value == level) return; + + pstate = disp->conn->state.pending; + pstate->dpms.value = level; + pstate->changes |= ECORE_DRM2_CONNECTOR_STATE_DPMS; +} + EAPI Eina_Bool ecore_drm2_display_enabled_get(Ecore_Drm2_Display *disp) {