about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2012-12-01 18:39:34 +0000
committerJames Booth <boothj5@gmail.com>2012-12-01 18:39:34 +0000
commit1029c430020dcf6731a4936669d32d00e2e24822 (patch)
tree10efbef56e1c3532b7499c9c75135ff149710060
parentfae848ea64dfb5f10f5f76e6c8f71d0fa202fcba (diff)
downloadprofani-tty-1029c430020dcf6731a4936669d32d00e2e24822.tar.gz
Use profanity input for idle time when libxss not availalbe
-rw-r--r--src/profanity.c9
-rw-r--r--src/ui.h5
-rw-r--r--src/windows.c19
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)