desklock - remove custom desklock command. solves comment in bug report

fixes T5978
@fix

now you can't make things weird by having an external lock command -
solves that unsolvable race... :) the other iseu i think is not relaed
to e and smellslike old garbage fb content either
xorg/kms/driver/kernel or something - i have seen junk onresume
sometimes but its a fb from like hours ago even so i smell it might be
that. this solves the other issue brought up by not making it possible
devs/bu5hm4n/mixerfun
Carsten Haitzler 2 years ago
parent 51064546bc
commit afb6ea1b22
  1. 6
      src/bin/e_config.c
  2. 2
      src/bin/e_config.h
  3. 49
      src/bin/e_desklock.c
  4. 7
      src/bin/e_desklock.h
  5. 36
      src/modules/conf_display/e_int_config_desklock.c
  6. 1
      src/modules/lokker/lokker.c

@ -796,8 +796,6 @@ _e_config_edd_init(Eina_Bool old)
E_CONFIG_VAL(D, T, desklock_on_suspend, INT);
E_CONFIG_VAL(D, T, desklock_autolock_screensaver, INT);
E_CONFIG_VAL(D, T, desklock_post_screensaver_time, DOUBLE);
E_CONFIG_VAL(D, T, desklock_use_custom_desklock, INT);
E_CONFIG_VAL(D, T, desklock_custom_desklock_cmd, STR);
E_CONFIG_VAL(D, T, desklock_ask_presentation, UCHAR);
E_CONFIG_VAL(D, T, desklock_ask_presentation_timeout, DOUBLE);
@ -1551,8 +1549,6 @@ e_config_load(void)
Eina_Bool found = EINA_FALSE;
CONFIG_VERSION_UPDATE_INFO(15);
if (e_config->desklock_use_custom_desklock)
e_config->desklock_auth_method = E_DESKLOCK_AUTH_METHOD_EXTERNAL;
EINA_LIST_FOREACH(e_config->modules, l, em)
if (!strcmp(em->name, "lokker"))
@ -1872,7 +1868,6 @@ e_config_load(void)
E_CONFIG_LIMIT(e_config->desklock_login_box_zone, -2, 1000);
E_CONFIG_LIMIT(e_config->desklock_autolock_screensaver, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_post_screensaver_time, 0.0, 300.0);
E_CONFIG_LIMIT(e_config->desklock_use_custom_desklock, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_ask_presentation, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_ask_presentation_timeout, 1.0, 300.0);
E_CONFIG_LIMIT(e_config->border_raise_on_mouse_action, 0, 1);
@ -2635,7 +2630,6 @@ _e_config_free(E_Config *ecf)
if (ecf->wallpaper_import_last_dev) eina_stringshare_del(ecf->wallpaper_import_last_dev);
if (ecf->wallpaper_import_last_path) eina_stringshare_del(ecf->wallpaper_import_last_path);
if (ecf->theme_default_border_style) eina_stringshare_del(ecf->theme_default_border_style);
if (ecf->desklock_custom_desklock_cmd) eina_stringshare_del(ecf->desklock_custom_desklock_cmd);
EINA_LIST_FREE(ecf->syscon.actions, sca)
{
if (sca->action) eina_stringshare_del(sca->action);

@ -206,8 +206,6 @@ struct _E_Config
int desklock_on_suspend; // GUI
int desklock_autolock_screensaver; // GUI
double desklock_post_screensaver_time; // GUI
int desklock_use_custom_desklock; // GUI
const char *desklock_custom_desklock_cmd; // GUI
unsigned char desklock_ask_presentation; // GUI
double desklock_ask_presentation_timeout; // GUI

@ -11,9 +11,6 @@ struct _E_Desklock_Run
int position;
};
static Ecore_Exe *_e_custom_desklock_exe = NULL;
static Ecore_Event_Handler *_e_custom_desklock_exe_handler = NULL;
static Ecore_Event_Handler *_e_desklock_run_handler = NULL;
static Ecore_Event_Handler *_e_desklock_randr_handler = NULL;
static Ecore_Job *job = NULL;
@ -34,7 +31,6 @@ static int _e_desklock_block = 0;
static Eina_Bool desklock_manual = EINA_FALSE;
/***********************************************************************/
static Eina_Bool _e_desklock_cb_custom_desklock_exit(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
static Eina_Bool _e_desklock_cb_run(void *data, int type, void *event);
static Eina_Bool _e_desklock_cb_randr(void *data, int type, void *event);
@ -211,7 +207,6 @@ e_desklock_demo(void)
E_Desklock_Interface *iface;
Eina_List *l;
if (e_desklock_is_external()) return EINA_FALSE;
EINA_LIST_REVERSE_FOREACH(desklock_ifaces, l, iface)
{
if (iface->show())
@ -245,25 +240,6 @@ _desklock_show_internal(Eina_Bool suspend)
#endif
if (_e_desklock_state) return EINA_TRUE;
if (e_desklock_is_external() && e_config->desklock_custom_desklock_cmd && e_config->desklock_custom_desklock_cmd[0])
{
e_menu_hide_all();
_e_custom_desklock_exe_handler =
ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
_e_desklock_cb_custom_desklock_exit, NULL);
if (e_config->desklock_language)
e_intl_language_set(e_config->desklock_language);
if (e_config->xkb.lock_layout)
e_xkb_layout_set(e_config->xkb.lock_layout);
_e_custom_desklock_exe =
e_util_exe_safe_run(e_config->desklock_custom_desklock_cmd, NULL);
_e_desklock_state = EINA_TRUE;
e_bindings_disabled_set(1);
/* TODO: ensure layer is correct on external desklocks? */
return 1;
}
if (e_desklock_is_personal())
{
if (!e_config->desklock_passwd)
@ -386,7 +362,7 @@ _desklock_hide_internal(void)
}
demo = EINA_FALSE;
if ((!_e_desklock_state) && (!_e_custom_desklock_exe)) return;
if (!_e_desklock_state) return;
e_comp_override_del();
e_comp_shape_queue();
@ -419,12 +395,6 @@ _desklock_hide_internal(void)
e_screensaver_update();
e_dpms_force_update();
if (e_desklock_is_external())
{
_e_custom_desklock_exe = NULL;
return;
}
EINA_LIST_FOREACH(hide_hooks, l, hide_cb)
hide_cb();
@ -493,23 +463,6 @@ e_desklock_unblock(void)
}
}
static Eina_Bool
_e_desklock_cb_custom_desklock_exit(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
Ecore_Exe_Event_Del *ev = event;
if (ev->exe != _e_custom_desklock_exe) return ECORE_CALLBACK_PASS_ON;
if (ev->exit_code != 0)
{
/* do something profound here... like notify someone */
}
e_desklock_hide();
return ECORE_CALLBACK_DONE;
}
static Eina_Bool
_e_desklock_run(E_Desklock_Run *task)
{

@ -15,7 +15,6 @@ typedef enum
{
E_DESKLOCK_AUTH_METHOD_SYSTEM = 0,
E_DESKLOCK_AUTH_METHOD_PERSONAL = 1,
E_DESKLOCK_AUTH_METHOD_EXTERNAL = 2,
E_DESKLOCK_AUTH_METHOD_PIN = 3,
} E_Desklock_Auth_Method;
@ -70,12 +69,6 @@ E_API void e_desklock_zone_block_set(const E_Zone *zone, Eina_Bool block);
extern E_API int E_EVENT_DESKLOCK;
static inline Eina_Bool
e_desklock_is_external(void)
{
return e_config->desklock_auth_method == E_DESKLOCK_AUTH_METHOD_EXTERNAL;
}
static inline Eina_Bool
e_desklock_is_personal(void)
{

@ -17,7 +17,7 @@ static void _cb_bg_mouse_down(void *data, Evas *evas, Evas_Object *obj,
struct _E_Config_Dialog_Data
{
Evas_Object *lock_cmd_entry, *passwd_entry, *pin_entry;
Evas_Object *passwd_entry, *pin_entry;
E_Config_Dialog *cfd, *bg_fsel;
/* Common vars */
@ -32,7 +32,6 @@ struct _E_Config_Dialog_Data
int zone;
char *desklock_personal_passwd;
char *pin_str;
char *custom_lock_cmd;
/* Layout */
const char *desklock_layout;
@ -143,7 +142,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
else if (!e_util_strcmp(bg->file, "user_background"))
cfdata->bg_method = E_DESKLOCK_BACKGROUND_METHOD_WALLPAPER;
else
cfdata->bg_method = E_DESKLOCK_BACKGROUND_METHOD_CUSTOM;
cfdata->bg_method = E_DESKLOCK_BACKGROUND_METHOD_THEME_DESKLOCK;
cfdata->bg_method_prev = cfdata->bg_method;
#ifndef HAVE_WAYLAND_ONLY
@ -154,9 +153,6 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->use_xscreensaver = 1;
cfdata->desklock_auth_method = e_config->desklock_auth_method;
if (e_config->desklock_custom_desklock_cmd)
cfdata->custom_lock_cmd = strdup(e_config->desklock_custom_desklock_cmd);
cfdata->desklock_layout = e_config->xkb.desklock_layout;
cfdata->start_locked = e_config->desklock_start_locked;
cfdata->lock_on_suspend = e_config->desklock_on_suspend;
@ -191,7 +187,6 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
E_Config_Desklock_Background *bg;
if (cfdata->bg_fsel)
e_object_del(E_OBJECT(cfdata->bg_fsel));
E_FREE(cfdata->custom_lock_cmd);
E_FREE(cfdata->desklock_personal_passwd);
E_FREE(cfdata->pin_str);
EINA_LIST_FREE(cfdata->bgs, bg)
@ -237,9 +232,6 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
ow = e_widget_radio_add(evas, _("Use PIN (insecure)"), E_DESKLOCK_AUTH_METHOD_PIN, rg);
evas_object_smart_callback_add(ow, "changed", _login_method_change, cfdata);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_radio_add(evas, _("Use External Screenlock Command"), E_DESKLOCK_AUTH_METHOD_EXTERNAL, rg);
evas_object_smart_callback_add(ow, "changed", _login_method_change, cfdata);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Personal Screenlock Password (insecure)"), 0);
cfdata->passwd_entry = ow = e_widget_entry_add(cfd->dia->win, &(cfdata->desklock_personal_passwd), NULL, NULL, NULL);
@ -253,16 +245,10 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
e_widget_framelist_object_append(of, ow);
e_widget_list_object_append(ol, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("External Screenlock Command"), 0);
cfdata->lock_cmd_entry = ow = e_widget_entry_add(cfd->dia->win, &(cfdata->custom_lock_cmd), NULL, NULL, NULL);
e_widget_framelist_object_append(of, ow);
e_widget_disabled_set(cfdata->passwd_entry,
(cfdata->desklock_auth_method != E_DESKLOCK_AUTH_METHOD_PERSONAL));
e_widget_disabled_set(cfdata->pin_entry,
(cfdata->desklock_auth_method != E_DESKLOCK_AUTH_METHOD_PIN));
e_widget_disabled_set(cfdata->lock_cmd_entry,
(cfdata->desklock_auth_method != E_DESKLOCK_AUTH_METHOD_EXTERNAL));
e_widget_toolbook_page_append(otb, NULL, _("Locking"), ol,
1, 1, 1, 0, 0.0, 0.0);
@ -468,10 +454,6 @@ _basic_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
else
e_config->desklock_login_box_zone = cfdata->zone;
if (cfdata->custom_lock_cmd)
eina_stringshare_replace(&e_config->desklock_custom_desklock_cmd,
cfdata->custom_lock_cmd);
cfdata->bg_method_prev = cfdata->bg_method;
e_config_save_queue();
return 1;
@ -541,13 +523,6 @@ _basic_check_changed(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfd
return 1;
}
if (e_config->desklock_custom_desklock_cmd && cfdata->custom_lock_cmd)
{
if (strcmp(e_config->desklock_custom_desklock_cmd, cfdata->custom_lock_cmd) != 0)
return 1;
}
else if (e_config->desklock_custom_desklock_cmd != cfdata->custom_lock_cmd)
return 1;
return 0;
}
@ -697,13 +672,6 @@ _login_method_change(void *data, Evas_Object *obj EINA_UNUSED, void *event_info
e_widget_entry_select_all(cfdata->pin_entry);
e_widget_focus_set(cfdata->pin_entry, 1);
}
e_widget_disabled_set(cfdata->lock_cmd_entry,
(cfdata->desklock_auth_method != E_DESKLOCK_AUTH_METHOD_EXTERNAL));
if (!e_widget_disabled_get(cfdata->lock_cmd_entry))
{
e_widget_entry_select_all(cfdata->lock_cmd_entry);
e_widget_focus_set(cfdata->lock_cmd_entry, 1);
}
}
static void

@ -473,7 +473,6 @@ _lokker_popup_add(E_Zone *zone)
E_LIST_HANDLER_APPEND(edd->handlers, ECORE_EVENT_MOUSE_BUTTON_DOWN, _pin_mouse_button_down, lp);
E_LIST_HANDLER_APPEND(edd->handlers, ECORE_EVENT_MOUSE_BUTTON_UP, _pin_mouse_button_up, lp);
break;
case E_DESKLOCK_AUTH_METHOD_EXTERNAL: //handled by e_desklock
default: break;
}
if (cbg)

Loading…
Cancel
Save