Keep all actions in a list so we can safely shutdown.
SVN revision: 29359
This commit is contained in:
parent
4d0bd7c9b5
commit
5c70a5ecaa
|
@ -63,7 +63,6 @@
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
static void _e_action_free(E_Action *act);
|
static void _e_action_free(E_Action *act);
|
||||||
static Evas_Bool _e_actions_cb_free(Evas_Hash *hash, const char *key, void *data, void *fdata);
|
|
||||||
static E_Maximize _e_actions_maximize_parse(const char *maximize);
|
static E_Maximize _e_actions_maximize_parse(const char *maximize);
|
||||||
static int _action_groups_sort_cb(void *d1, void *d2);
|
static int _action_groups_sort_cb(void *d1, void *d2);
|
||||||
|
|
||||||
|
@ -1915,6 +1914,7 @@ ACT_FN_GO(desk_lock)
|
||||||
|
|
||||||
/* local subsystem globals */
|
/* local subsystem globals */
|
||||||
static Evas_Hash *actions = NULL;
|
static Evas_Hash *actions = NULL;
|
||||||
|
static Evas_List *action_list = NULL;
|
||||||
static Evas_List *action_names = NULL;
|
static Evas_List *action_names = NULL;
|
||||||
static Evas_List *action_groups = NULL;
|
static Evas_List *action_groups = NULL;
|
||||||
|
|
||||||
|
@ -2253,10 +2253,18 @@ e_actions_init(void)
|
||||||
EAPI int
|
EAPI int
|
||||||
e_actions_shutdown(void)
|
e_actions_shutdown(void)
|
||||||
{
|
{
|
||||||
|
Evas_List *l, *tmp;
|
||||||
|
|
||||||
e_action_predef_name_all_del();
|
e_action_predef_name_all_del();
|
||||||
action_names = evas_list_free(action_names);
|
action_names = evas_list_free(action_names);
|
||||||
while (actions)
|
evas_hash_free(actions);
|
||||||
evas_hash_foreach(actions, _e_actions_cb_free, NULL);
|
actions = NULL;
|
||||||
|
for (l = action_list; l;)
|
||||||
|
{
|
||||||
|
tmp = l;
|
||||||
|
l = l->next;
|
||||||
|
e_object_del(E_OBJECT(tmp->data));
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2279,6 +2287,7 @@ e_action_add(const char *name)
|
||||||
act->name = name;
|
act->name = name;
|
||||||
actions = evas_hash_direct_add(actions, act->name, act);
|
actions = evas_hash_direct_add(actions, act->name, act);
|
||||||
action_names = evas_list_append(action_names, name);
|
action_names = evas_list_append(action_names, name);
|
||||||
|
action_list = evas_list_append(action_list, act);
|
||||||
}
|
}
|
||||||
return act;
|
return act;
|
||||||
}
|
}
|
||||||
|
@ -2442,17 +2451,10 @@ _e_action_free(E_Action *act)
|
||||||
{
|
{
|
||||||
actions = evas_hash_del(actions, act->name, act);
|
actions = evas_hash_del(actions, act->name, act);
|
||||||
action_names = evas_list_remove(action_names, act->name);
|
action_names = evas_list_remove(action_names, act->name);
|
||||||
|
action_list = evas_list_remove(action_list, act);
|
||||||
free(act);
|
free(act);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Evas_Bool
|
|
||||||
_e_actions_cb_free(Evas_Hash *hash __UNUSED__, const char *key __UNUSED__,
|
|
||||||
void *data, void *fdata __UNUSED__)
|
|
||||||
{
|
|
||||||
e_object_del(E_OBJECT(data));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static E_Maximize
|
static E_Maximize
|
||||||
_e_actions_maximize_parse(const char *params)
|
_e_actions_maximize_parse(const char *params)
|
||||||
{
|
{
|
||||||
|
|
|
@ -587,8 +587,7 @@ main(int argc, char **argv)
|
||||||
e_error_message_show(_("Enlightenment cannot set up its actions system."));
|
e_error_message_show(_("Enlightenment cannot set up its actions system."));
|
||||||
_e_main_shutdown(-1);
|
_e_main_shutdown(-1);
|
||||||
}
|
}
|
||||||
// seem to have gotten into an infitie loop here - disable for now.
|
_e_main_shutdown_push(e_actions_shutdown);
|
||||||
// _e_main_shutdown_push(e_actions_shutdown);
|
|
||||||
TS("bindings");
|
TS("bindings");
|
||||||
/* init bindings system */
|
/* init bindings system */
|
||||||
if (!e_bindings_init())
|
if (!e_bindings_init())
|
||||||
|
|
Loading…
Reference in New Issue