Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_actions.c e_config.c e_config.h e_desklock.c e_int_config_desklock.c e_intl.c e_ipc_handlers.h e_ipc_handlers_list.h e_manager.c e_utils.c e_utils.h Log Message: 1. remove ld_lib_path from all things e17 executes EXCEPT its own specific tools. 2. custom screensaver patches =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_actions.c,v retrieving revision 1.88 retrieving revision 1.89 diff -u -3 -r1.88 -r1.89 --- e_actions.c 28 Dec 2006 14:15:10 -0000 1.88 +++ e_actions.c 29 Dec 2006 02:56:25 -0000 1.89 @@ -1225,8 +1225,10 @@ if (params) { Ecore_Exe *exe; - + + e_util_library_path_strip(); exe = ecore_exe_run(params, NULL); + e_util_library_path_restore(); e_exehist_add("action/exec", params); if (exe) ecore_exe_free(exe); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_config.c,v retrieving revision 1.218 retrieving revision 1.219 diff -u -3 -r1.218 -r1.219 --- e_config.c 17 Dec 2006 11:24:59 -0000 1.218 +++ e_config.c 29 Dec 2006 02:56:25 -0000 1.219 @@ -478,6 +478,8 @@ E_CONFIG_VAL(D, T, desklock_use_timeout, INT); E_CONFIG_VAL(D, T, desklock_timeout, DOUBLE); E_CONFIG_VAL(D, T, desklock_disable_screensaver, INT); + E_CONFIG_VAL(D, T, desklock_use_custom_screensaver, INT); + E_CONFIG_VAL(D, T, desklock_custom_screensaver_cmd, STR); E_CONFIG_VAL(D, T, display_res_restore, INT); E_CONFIG_VAL(D, T, display_res_width, INT); E_CONFIG_VAL(D, T, display_res_height, INT); @@ -1282,6 +1284,12 @@ e_config->remember_internal_windows = 1; IFCFGEND; + + IFCFG(0x00106); + e_config->desklock_use_custom_screensaver = 0; + e_config->desklock_custom_screensaver_cmd = NULL; + IFCFGEND; + #if 0 /* example of new config */ IFCFG(0x0090); /* the version # where this value(s) was introduced */ e_config->new_value = 10; /* set the value(s) */ @@ -1366,8 +1374,9 @@ E_CONFIG_LIMIT(e_config->desklock_login_box_zone, -2, 1000); E_CONFIG_LIMIT(e_config->desklock_autolock, 0, 1); E_CONFIG_LIMIT(e_config->desklock_use_timeout, 0, 1); - E_CONFIG_LIMIT(e_config->desklock_timeout, 1.0, 600.0); + E_CONFIG_LIMIT(e_config->desklock_timeout, 1.0, 5400.0); E_CONFIG_LIMIT(e_config->desklock_disable_screensaver, 0, 1); + E_CONFIG_LIMIT(e_config->desklock_use_custom_screensaver, 0, 1); E_CONFIG_LIMIT(e_config->display_res_restore, 0, 1); E_CONFIG_LIMIT(e_config->display_res_width, 1, 8192); E_CONFIG_LIMIT(e_config->display_res_height, 1, 8192); @@ -1966,6 +1975,7 @@ if (e_config->wallpaper_import_last_dev) evas_stringshare_del(e_config->wallpaper_import_last_dev); if (e_config->wallpaper_import_last_path) evas_stringshare_del(e_config->wallpaper_import_last_path); if (e_config->theme_default_border_style) evas_stringshare_del(e_config->theme_default_border_style); + if (e_config->desklock_custom_screensaver_cmd) evas_stringshare_del(e_config->desklock_custom_screensaver_cmd); E_FREE(e_config); } } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_config.h,v retrieving revision 1.136 retrieving revision 1.137 diff -u -3 -r1.136 -r1.137 --- e_config.h 17 Dec 2006 16:14:11 -0000 1.136 +++ e_config.h 29 Dec 2006 02:56:26 -0000 1.137 @@ -52,7 +52,7 @@ /* increment this whenever a new set of config values are added but the users * config doesn't need to be wiped - simply new values need to be put in */ -#define E_CONFIG_FILE_GENERATION 0x0105 +#define E_CONFIG_FILE_GENERATION 0x0106 #define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION) #define E_EVAS_ENGINE_DEFAULT 0 @@ -231,7 +231,9 @@ int desklock_use_timeout; // GUI double desklock_timeout; // GUI int desklock_disable_screensaver; // GUI - + int desklock_use_custom_screensaver; //GUI + const char *desklock_custom_screensaver_cmd; // GUI + int display_res_restore; // GUI int display_res_width; // GUI int display_res_height; // GUI =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_desklock.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -3 -r1.28 -r1.29 --- e_desklock.c 21 Oct 2006 02:32:13 -0000 1.28 +++ e_desklock.c 29 Dec 2006 02:56:26 -0000 1.29 @@ -49,6 +49,8 @@ static Ecore_Event_Handler *_e_desklock_exit_handler = NULL; static pid_t _e_desklock_child_pid = -1; #endif +static Ecore_Exe *_e_custom_saver_exe = NULL; +static Ecore_Event_Handler *_e_custom_saver_exe_handler = NULL; /***********************************************************************/ @@ -57,6 +59,7 @@ static int _e_desklock_cb_mouse_up(void *data, int type, void *event); 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_saver_exit(void *data, int type, void *event); static void _e_desklock_passwd_update(); static void _e_desklock_backspace(); @@ -77,17 +80,25 @@ EAPI int e_desklock_init(void) { + if (e_config->desklock_disable_screensaver) ecore_x_screensaver_timeout_set(0); else { if (e_config->desklock_use_timeout) - ecore_x_screensaver_timeout_set(e_config->desklock_timeout); + ecore_x_screensaver_timeout_set(e_config->desklock_timeout); } - + + /* + * Effectively hide the X screensaver yet allow + * it to generate the timer events for us. + */ + ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver); + ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver); + if (e_config->desklock_background) e_filereg_register(e_config->desklock_background); - + return 1; } @@ -110,9 +121,23 @@ E_Zone *current_zone; int zone_counter; int total_zone_num; + - if (edd) return 0; + if (_e_custom_saver_exe) return 0; + + if (e_config->desklock_use_custom_screensaver) + { + _e_custom_saver_exe_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, + _e_desklock_cb_custom_saver_exit, + NULL); + e_util_library_path_strip(); + _e_custom_saver_exe = ecore_exe_run(e_config->desklock_custom_screensaver_cmd, NULL); + e_util_library_path_restore(); + return 1; + } + if (edd) return 0; + #ifdef HAVE_PAM if (e_config->desklock_auth_method == 1) { @@ -323,8 +348,14 @@ { E_Desklock_Popup_Data *edp; - if (!edd) return; + if ((!edd) && (!_e_custom_saver_exe)) return; + if (e_config->desklock_use_custom_screensaver) + { + _e_custom_saver_exe = NULL; + return; + } + if (edd->elock_grab_break_wnd) ecore_x_window_show(edd->elock_grab_break_wnd); while (edd->elock_wnd_list) @@ -735,3 +766,30 @@ return strdup("localhost"); } #endif + +static int +_e_desklock_cb_custom_saver_exit(void *data, int type, void *event) +{ + Ecore_Exe_Event_Del *ev; + + ev = event; + if (ev->exe != _e_custom_saver_exe) return 1; + + if (ev->exit_code != 0) + { + /* do something profound here... like notify someone */ + } + + /* + * Miserable HACK alert!!! + * Seems I must reset this. Some reason yet unknown, my + * intended values are getting reset!?! + */ + ecore_x_screensaver_timeout_set(e_config->desklock_timeout); + ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver); + ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver); + + e_desklock_hide(); + + return 0; +} =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_desklock.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -3 -r1.44 -r1.45 --- e_int_config_desklock.c 28 Dec 2006 14:08:54 -0000 1.44 +++ e_int_config_desklock.c 29 Dec 2006 02:56:26 -0000 1.45 @@ -14,7 +14,6 @@ #define DEF_DESKLOCK_BACKGROUND "theme_desklock_background" #define DEF_THEME_BACKGROUND "theme_background" - static void *_create_data(E_Config_Dialog *cfd); static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); @@ -61,6 +60,9 @@ int specific_lb_zone; // local variable int specific_lb_zone_backup; // used to have smart iface + int use_custom_screensaver; + char *custom_screensaver_cmd; + int zone_count; // local variable; int bg_mode; // config @@ -290,7 +292,7 @@ cfdata->autolock = e_config->desklock_autolock; cfdata->use_timeout = e_config->desklock_use_timeout; - cfdata->timeout = e_config->desklock_timeout; + cfdata->timeout = e_config->desklock_timeout / 60; /* should be taken from e_config */ //cfdata->login_box_on_zone = -1; @@ -347,6 +349,10 @@ cfdata->auth_method = e_config->desklock_auth_method; #endif + cfdata->use_custom_screensaver = e_config->desklock_use_custom_screensaver; + if (e_config->desklock_custom_screensaver_cmd) + cfdata->custom_screensaver_cmd = strdup(e_config->desklock_custom_screensaver_cmd); + //vertical_lb_align = e_config->desklock_login } @@ -385,14 +391,16 @@ e_config->desklock_personal_passwd = evas_stringshare_add(cfdata->desklock_passwd_cp); e_config->desklock_autolock = cfdata->autolock; e_config->desklock_use_timeout = cfdata->use_timeout; - e_config->desklock_timeout = cfdata->timeout; + e_config->desklock_timeout = cfdata->timeout * 60; #ifdef HAVE_PAM e_config->desklock_auth_method = cfdata->auth_method; #endif if (e_config->desklock_use_timeout) - { - ecore_x_screensaver_timeout_set(e_config->desklock_timeout); - } + ecore_x_screensaver_timeout_set(e_config->desklock_timeout); + + ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver); + ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver); + e_config_save_queue(); return 1; } @@ -417,8 +425,8 @@ ob = e_widget_label_add(evas, _("Time until screensaver starts")); e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get()); e_widget_framelist_object_append(of, ob); - ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"), - 1.0, 600.0, + ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), + 1.0, 90.0, 1.0, 0, &(cfdata->timeout), NULL, 200); e_widget_framelist_object_append(of, ob); @@ -467,14 +475,25 @@ e_config->desklock_autolock = cfdata->autolock; e_config->desklock_use_timeout = cfdata->use_timeout; - e_config->desklock_timeout = cfdata->timeout; + e_config->desklock_timeout = cfdata->timeout * 60; #ifdef HAVE_PAM e_config->desklock_auth_method = cfdata->auth_method; #endif if (e_config->desklock_use_timeout) - ecore_x_screensaver_timeout_set(e_config->desklock_timeout); + ecore_x_screensaver_timeout_set(e_config->desklock_timeout); + + e_config->desklock_use_custom_screensaver = cfdata->use_custom_screensaver; + if (cfdata->custom_screensaver_cmd) + { + if (e_config->desklock_custom_screensaver_cmd) + evas_stringshare_del(e_config->desklock_custom_screensaver_cmd); + e_config->desklock_custom_screensaver_cmd = evas_stringshare_add(cfdata->custom_screensaver_cmd); + } + ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver); + ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver); + e_config_save_queue(); return 1; } @@ -713,7 +732,7 @@ e_widget_disabled_set(of, !ecore_x_screensaver_event_available_get()); - ob = e_widget_check_add(evas, _("Enable screensaver"), &(cfdata->use_timeout)); + ob = e_widget_check_add(evas, _("Enable X screensaver"), &(cfdata->use_timeout)); e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get()); e_widget_framelist_object_append(of, ob); @@ -724,8 +743,8 @@ ob = e_widget_label_add(evas, _("Time until screensaver starts")); e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get()); e_widget_framelist_object_append(of, ob); - ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"), - 1.0, 600.0, + ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), + 1.0, 90.0, 1.0, 0, &(cfdata->timeout), NULL, 100); e_widget_framelist_object_append(of, ob); @@ -733,6 +752,23 @@ e_widget_table_object_append(ot, of, 1, 2, 1, 2 ,1 ,1 ,1 ,1); #else e_widget_table_object_append(ot, of, 1, 2, 1, 1 ,1 ,1 ,1 ,1); +#endif + + /* + * Allow Custom Screen Saver + * Useful, for example, for those of us who prefer + * to use things like xscreensaver, kscreesaver, etc... + */ + of = e_widget_framelist_add(evas, _("Custom Screensaver"), 0); + ob = e_widget_check_add(evas, _("Use custom screensaver/desklock"), + &(cfdata->use_custom_screensaver)); + e_widget_framelist_object_append(of, ob); + ob = e_widget_entry_add(evas, &(cfdata->custom_screensaver_cmd)); + e_widget_framelist_object_append(of, ob); +#ifdef HAVE_PAM + e_widget_table_object_append(ot, of, 0, 4, 2, 1, 1, 1, 1, 1); +#else + e_widget_table_object_append(ot, of, 0, 4, 2, 1, 1, 1, 1, 1); #endif e_dialog_resizable_set(cfd->dia, 0); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_intl.c,v retrieving revision 1.87 retrieving revision 1.88 diff -u -3 -r1.87 -r1.88 --- e_intl.c 17 Dec 2006 11:24:59 -0000 1.87 +++ e_intl.c 29 Dec 2006 02:56:26 -0000 1.88 @@ -352,7 +352,9 @@ if (E_EXE_IS_VALID(imc->e_im_exec)) { + e_util_library_path_strip(); _e_intl_input_method_exec = ecore_exe_run(imc->e_im_exec, NULL); + e_util_library_path_restore(); ecore_exe_tag_set(_e_intl_input_method_exec,"E/im_exec"); if ( !_e_intl_input_method_exec || =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_ipc_handlers.h,v retrieving revision 1.141 retrieving revision 1.142 diff -u -3 -r1.141 -r1.142 --- e_ipc_handlers.h 22 Dec 2006 10:55:25 -0000 1.141 +++ e_ipc_handlers.h 29 Dec 2006 02:56:26 -0000 1.142 @@ -7816,3 +7816,83 @@ #elif (TYPE == E_REMOTE_IN) #endif #undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-desklock-use-custom-screensaver-set", 1, "Set whether a custom screensaver will be utilized", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_INT(atoi(params[0]), HDL); +#elif (TYPE == E_WM_IN) + START_INT(policy, HDL); + e_config->desklock_use_custom_screensaver = policy; + E_CONFIG_LIMIT(e_config->desklock_use_custom_screensaver, 0, 1); + SAVE; + END_INT; +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-desklock-use-custom-screensaver-get", 0, "Get whether a custom screen saver is being used", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_INT(e_config->desklock_use_custom_screensaver, E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + START_INT(val, HDL); + printf("REPLY: POLICY=%d\n", val); + END_INT; +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-desklock-custom-screensaver-cmd-set", 1, "Set the current custom screensaver command to OPT1", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_STRING(params[0], HDL); +#elif (TYPE == E_WM_IN) + STRING(s, HDL); + if (e_config->desklock_custom_screensaver_cmd) + evas_stringshare_del(e_config->desklock_custom_screensaver_cmd); + e_config->desklock_custom_screensaver_cmd = evas_stringshare_add(s); + END_STRING(s); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-desklock-custom-screensaver-cmd-get", 0, "Get the current custom screensaver command", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_STRING(e_config->desklock_custom_screensaver_cmd, E_IPC_OP_PROFILE_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + STRING(s, HDL); + printf("REPLY: \"%s\"\n", s); + END_STRING(s); +#endif +#undef HDL =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_ipc_handlers_list.h,v retrieving revision 1.53 retrieving revision 1.54 diff -u -3 -r1.53 -r1.54 --- e_ipc_handlers_list.h 22 Dec 2006 10:55:25 -0000 1.53 +++ e_ipc_handlers_list.h 29 Dec 2006 02:56:26 -0000 1.54 @@ -413,3 +413,11 @@ #define E_IPC_OP_HIBERNATE 376 #define E_IPC_OP_REBOOT 377 #define E_IPC_OP_SUSPEND 378 + +#define E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_SET 379 +#define E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET 380 +#define E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY 381 +#define E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_SET 382 +#define E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET 383 +#define E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET_REPLY 384 + =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_manager.c,v retrieving revision 1.58 retrieving revision 1.59 diff -u -3 -r1.58 -r1.59 --- e_manager.c 28 Oct 2006 01:28:01 -0000 1.58 +++ e_manager.c 29 Dec 2006 02:56:26 -0000 1.59 @@ -754,7 +754,8 @@ if (e->on) { - if (e_config->desklock_autolock) e_desklock_show(); + if ((e_config->desklock_autolock) || (e_config->desklock_use_custom_screensaver)) + e_desklock_show(); } return 1; } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_utils.c,v retrieving revision 1.55 retrieving revision 1.56 diff -u -3 -r1.55 -r1.56 --- e_utils.c 17 Dec 2006 11:24:59 -0000 1.55 +++ e_utils.c 29 Dec 2006 02:56:26 -0000 1.56 @@ -229,7 +229,9 @@ strcpy(buf, penv_display); ok = 1; + e_util_library_path_strip(); exe = ecore_exe_run(cmd, NULL); + e_util_library_path_restore(); if (!exe) { e_util_dialog_show(_("Run Error"), @@ -778,6 +780,32 @@ else s = strdup(_("Unknown")); return s; +} + +static char *prev_ld_library_path = NULL; + +EAPI void +e_util_library_path_strip(void) +{ + char *p, *p2; + + p = getenv("LD_LIBRARY_PATH"); + E_FREE(prev_ld_library_path); + if (p) + { + prev_ld_library_path = strdup(p); + p2 = strchr(p, ':'); + if (p2) p2++; + e_util_env_set("LD_LIBRARY_PATH", p2); + } +} + +EAPI void +e_util_library_path_restore(void) +{ + if (!prev_ld_library_path) return; + e_util_env_set("LD_LIBRARY_PATH", prev_ld_library_path); + E_FREE(prev_ld_library_path); } /* local subsystem functions */ =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_utils.h,v retrieving revision 1.29 retrieving revision 1.30 diff -u -3 -r1.29 -r1.30 --- e_utils.h 5 Dec 2006 14:28:48 -0000 1.29 +++ e_utils.h 29 Dec 2006 02:56:26 -0000 1.30 @@ -47,6 +47,8 @@ EAPI char *e_util_shell_env_path_eval(char *path); EAPI char *e_util_size_string_get(off_t size); EAPI char *e_util_file_time_get(time_t ftime); +EAPI void e_util_library_path_strip(void); +EAPI void e_util_library_path_restore(void); #endif #endif ------------------------------------------------------------------------- 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 enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs