raster pushed a commit to branch master.

commit 67df5b4ad1aff39b6792fa77847258c3f14b9b39
Author: Deon Thomas <[email protected]>
Date:   Wed Jun 26 08:32:42 2013 +0900

    Ecore DPMS Function to get the current dpms power level
---
 src/lib/ecore_x/Ecore_X.h            |  9 +++++++++
 src/lib/ecore_x/xcb/ecore_xcb_dpms.c | 33 +++++++++++++++++++++++++++++++++
 src/lib/ecore_x/xlib/ecore_x_dpms.c  | 24 ++++++++++++++++++++++++
 3 files changed, 66 insertions(+)

diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index fa10024..8aac0e9 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -398,6 +398,14 @@ typedef enum _Ecore_X_Error_Code
    ECORE_X_ERROR_CODE_BAD_IMPLEMENTATION = 17,
 } Ecore_X_Error_Code;
 
+typedef enum _Ecore_X_Dpms_Mode
+{
+   ECORE_X_DPMS_MODE_ON = 0,
+   ECORE_X_DPMS_MODE_STANDBY = 1,
+   ECORE_X_DPMS_MODE_SUSPEND = 2,
+   ECORE_X_DPMS_MODE_OFF = 3
+} Ecore_X_Dpms_Mode;
+
 typedef struct _Ecore_X_Event_Mouse_In                     
Ecore_X_Event_Mouse_In;
 typedef struct _Ecore_X_Event_Mouse_Out                    
Ecore_X_Event_Mouse_Out;
 typedef struct _Ecore_X_Event_Window_Focus_In              
Ecore_X_Event_Window_Focus_In;
@@ -2371,6 +2379,7 @@ EAPI Eina_Bool      ecore_x_dpms_query(void);
 EAPI Eina_Bool      ecore_x_dpms_capable_get(void);
 EAPI Eina_Bool      ecore_x_dpms_enabled_get(void);
 EAPI void           ecore_x_dpms_enabled_set(int enabled);
+EAPI Ecore_X_Dpms_Mode  ecore_x_dpms_power_level_get(void);
 EAPI void           ecore_x_dpms_timeouts_get(unsigned int *standby, unsigned 
int *suspend, unsigned int *off);
 EAPI Eina_Bool      ecore_x_dpms_timeouts_set(unsigned int standby, unsigned 
int suspend, unsigned int off);
 EAPI unsigned int   ecore_x_dpms_timeout_standby_get(void);
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_dpms.c 
b/src/lib/ecore_x/xcb/ecore_xcb_dpms.c
index 98dc7d3..95360e3 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_dpms.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_dpms.c
@@ -319,3 +319,36 @@ ecore_x_dpms_timeout_off_set(unsigned int new_timeout)
    ecore_x_dpms_timeouts_set(standby, suspend, new_timeout);
 }
 
+/**
+ * Check the DPMS power level.
+ * @return @c 0 if DPMS is :In Use
+ * @return @c 1 if DPMS is :Blanked, low power
+ * @return @c 2 if DPMS is :Blanked, lower power
+ * @return @c 3 if DPMS is :Shut off, awaiting activity
+ * @return @c -1 otherwise.
+*/
+EAPI Ecore_X_Dpms_Mode 
+ecore_x_dpms_power_level_get(void)
+{
+   Ecore_X_Dpms_Mode ret = -1;
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_info_cookie_t cookie;
+   xcb_dpms_info_reply_t *reply;
+#endif
+
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   CHECK_XCB_CONN;
+
+   if (!_dpms_avail) return ret;
+
+#ifdef ECORE_XCB_DPMS
+   cookie = xcb_dpms_info_unchecked(_ecore_xcb_conn);
+   reply = xcb_dpms_info_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply) return -1;
+
+   ret = reply->power_level;
+   free(reply);
+#endif
+
+   return ret;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_dpms.c 
b/src/lib/ecore_x/xlib/ecore_x_dpms.c
index beb914d..b3c3e38 100644
--- a/src/lib/ecore_x/xlib/ecore_x_dpms.c
+++ b/src/lib/ecore_x/xlib/ecore_x_dpms.c
@@ -80,6 +80,30 @@ ecore_x_dpms_enabled_get(void)
 }
 
 /**
+ * Check the DPMS power level.
+ * @return @c 0 if DPMS is :In Use
+ * @return @c 1 if DPMS is :Blanked, low power
+ * @return @c 2 if DPMS is :Blanked, lower power
+ * @return @c 3 if DPMS is :Shut off, awaiting activity
+ * @return @c -1 othwhise.
+ */
+
+EAPI Ecore_X_Dpms_Mode
+ecore_x_dpms_power_level_get(void)
+{
+#ifdef ECORE_XDPMS
+   unsigned char state;
+   unsigned short power_lvl;
+
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   DPMSInfo(_ecore_x_disp, &power_lvl, &state);
+   return (int)power_lvl;
+#else
+   return -1;
+#endif
+}
+
+/**
  * Sets the DPMS state of the display.
  * @param enabled @c 0 to disable DPMS characteristics of the server, enable 
it otherwise.
  * @ingroup Ecore_X_DPMS_Group

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to