EAPI int ecore_x_screensaver_idle_time_get(void) { int ret = 0; #ifdef ECORE_XCB_SCREENSAVER xcb_screensaver_query_info_cookie_t cookie; xcb_screensaver_query_info_reply_t *reply; Ecore_X_Window root; #endif LOGFN(__FILE__, __LINE__, __FUNCTION__); CHECK_XCB_CONN; if (!_screensaver_avail) return 0; #ifdef ECORE_XCB_SCREENSAVER root = ((xcb_screen_t *)_ecore_xcb_screen)->root; cookie = xcb_screensaver_query_info_unchecked(_ecore_xcb_conn, root); reply = xcb_screensaver_query_info_reply(_ecore_xcb_conn, cookie, NULL); if (!reply) return 0; ret = (reply->ms_until_server / 1000); free(reply); #endif return ret; }
uint IdlenessWatcher::getIdleTimeMs() { xcb_screensaver_query_info_cookie_t infoCookie = xcb_screensaver_query_info_unchecked(mConn, mScreen->root); xcb_screensaver_query_info_reply_t* infoReply = xcb_screensaver_query_info_reply(mConn, infoCookie, NULL); if (!infoReply) { qWarning() << "Bad reply from X11 Screensaver"; return 0; } uint msSinceUserInput = infoReply->ms_since_user_input; free(infoReply); return msSinceUserInput; }
static void towel_window_update_working_time(towel_window_t *win, int period) { xcb_screensaver_query_info_cookie_t cookie; xcb_screensaver_query_info_reply_t *reply; cookie = xcb_screensaver_query_info_unchecked(win->conn, win->screen->root); reply = xcb_screensaver_query_info_reply(win->conn, cookie, NULL); #if DEBUG fprintf(stderr, "idle: %d sec\n", ms2sec(reply->ms_since_user_input)); #endif win->idle_time = ms2sec(reply->ms_since_user_input); if (win->idle_time < period) win->working_time += period; }