From 1029c430020dcf6731a4936669d32d00e2e24822 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 1 Dec 2012 18:39:34 +0000 Subject: [PATCH] Use profanity input for idle time when libxss not availalbe --- src/profanity.c | 9 +++++++-- src/ui.h | 5 ++--- src/windows.c | 19 ++++++++++++++++--- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/profanity.c b/src/profanity.c index 75df9f8e..0e168f24 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -94,6 +94,10 @@ prof_run(const int disable_tls, char *log_level) jabber_process_events(); inp_get_char(&ch, inp, &size); + + if (ch != ERR) { + ui_reset_idle_time(); + } } inp[size++] = '\0'; @@ -444,11 +448,12 @@ _process_input(char *inp) static void _handle_idle_time() { - // for development +// for development gint prefs_time = prefs_get_autoaway_time() * 1000; + // gint prefs_time = prefs_get_autoaway_time() * 60000; - unsigned long idle_ms = ui_get_desktop_idle(); + unsigned long idle_ms = ui_get_idle_time(); if (!idle) { if (idle_ms >= prefs_time) { idle = TRUE; diff --git a/src/ui.h b/src/ui.h index 42de85aa..262a51f4 100644 --- a/src/ui.h +++ b/src/ui.h @@ -76,9 +76,8 @@ void ui_disconnected(void); void ui_handle_special_keys(const int * const ch); void ui_switch_win(const int i); gboolean ui_windows_full(void); -#ifdef HAVE_LIBXSS -unsigned long ui_get_desktop_idle(void); -#endif +unsigned long ui_get_idle_time(void); +void ui_reset_idle_time(void); // create windows void create_title_bar(void); diff --git a/src/windows.c b/src/windows.c index ec9e89e5..87318766 100644 --- a/src/windows.c +++ b/src/windows.c @@ -74,6 +74,8 @@ static int max_cols = 0; static Display *display; #endif +static GTimer *ui_idle_time; + static void _set_current(int index); static void _create_windows(void); static void _cons_splash_logo(void); @@ -127,6 +129,7 @@ ui_init(void) #ifdef HAVE_LIBXSS display = XOpenDisplay(0); #endif + ui_idle_time = g_timer_new(); dirty = TRUE; } @@ -171,18 +174,28 @@ ui_refresh(void) inp_put_back(); } -#ifdef HAVE_LIBXSS unsigned long -ui_get_desktop_idle(void) +ui_get_idle_time(void) { +#ifdef HAVE_LIBXSS XScreenSaverInfo *info = XScreenSaverAllocInfo(); XScreenSaverQueryInfo(display, DefaultRootWindow(display), info); unsigned long result = info->idle; XFree(info); return result; -} +#else + gdouble seconds_elapsed = g_timer_elapsed(ui_idle_time); + unsigned long ms_elapsed = seconds_elapsed * 1000.0; + return ms_elapsed; #endif +} + +void +ui_reset_idle_time(void) +{ + g_timer_start(ui_idle_time); +} void ui_close(void)