Enlightenment CVS committal
Author : raster
Project : e17
Module : apps/e
Dir : e17/apps/e/src/bin
Modified Files:
e_desklock.c
Log Message:
ravenlock screensaver stuff
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_desklock.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- e_desklock.c 4 Apr 2007 10:18:19 -0000 1.36
+++ e_desklock.c 4 Apr 2007 11:43:36 -0000 1.37
@@ -54,6 +54,8 @@
#endif
static Ecore_Exe *_e_custom_desklock_exe = NULL;
static Ecore_Event_Handler *_e_custom_desklock_exe_handler = NULL;
+static Ecore_Timer *_e_desklock_idle_timer = NULL;
+static int _e_desklock_user_idle = 0;
/***********************************************************************/
@@ -63,6 +65,7 @@
static int _e_desklock_cb_mouse_wheel(void *data, int type, void *event);
static int _e_desklock_cb_mouse_move(void *data, int type, void *event);
static int _e_desklock_cb_custom_desklock_exit(void *data, int type, void
*event);
+static int _e_desklock_cb_idle_timer(void *data);
static void _e_desklock_passwd_update();
static void _e_desklock_backspace();
@@ -82,8 +85,13 @@
EAPI int
e_desklock_init(void)
{
+ /* A timer to tick every second, watching for an idle user */
+ _e_desklock_idle_timer = ecore_timer_add(1.0,
+ _e_desklock_cb_idle_timer, NULL);
+
if (e_config->desklock_background)
e_filereg_register(e_config->desklock_background);
+
return 1;
}
@@ -781,4 +789,38 @@
e_desklock_hide();
return 0;
+}
+
+static int
+_e_desklock_cb_idle_timer(void *data)
+{
+ if (e_config->desklock_autolock_idle)
+ {
+ /* If a desklock is already up, bail */
+ if ((_e_custom_desklock_exe) || (edd)) return 1;
+
+ /* If we have exceeded our idle time... */
+ if (ecore_x_screensaver_idle_time_get() >=
e_config->desklock_autolock_idle_timeout)
+ {
+ /*
+ * Unfortunately, not all "desklocks" stay up for as long as
+ * the user is idle or until it is unlocked.
+ *
+ * 'xscreensaver-command -lock' for example sends a command
+ * to xscreensaver and then terminates. So, we have another
+ * check (_e_desklock_user_idle) which lets us know that we
+ * have locked the screen due to idleness.
+ */
+ if (!_e_desklock_user_idle)
+ {
+ _e_desklock_user_idle = 1;
+ e_desklock_show();
+ }
+ }
+ else
+ _e_desklock_user_idle = 0;
+ }
+
+ /* Make sure our timer persists. */
+ return 1;
}
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs