e17/everything: fix segv on shutdown. fix macros

SVN revision: 62407
This commit is contained in:
Hannes Janetzek 2011-08-12 18:27:41 +00:00
parent 04d8b8d521
commit ecaba44ca3
7 changed files with 34 additions and 30 deletions

View File

@ -167,7 +167,12 @@ e_modapi_shutdown(E_Module *m __UNUSED__)
Evry_Module *em;
EINA_LIST_FOREACH(e_datastore_get("evry_modules"), l, em)
em->shutdown();
{
if (em->active)
em->shutdown();
em->active = EINA_FALSE;
}
evry_plug_apps_shutdown();
evry_plug_files_shutdown();

View File

@ -216,14 +216,15 @@ struct _Evry_Event_Action_Performed
_p = E_NEW(Plugin, 1); \
_p->base = *_plugin; \
_p->base.items = NULL; \
evry->item_new(&_p->base.base, (Evry_Plugin*)_p, \
_plugin->base.label, NULL, \
(Evry_Item_Free_Cb)_p->base.finish); \
_p->base.base.ref = 1; \
_p->base.base.plugin = (Evry_Plugin*)_p; \
_p->base.base.free = (Evry_Item_Free_Cb)_p->base.finish; \
_p->base.base.label = eina_stringshare_add(_plugin->base.label); \
_p->base.base.detail = eina_stringshare_add(_plugin->base.detail); \
_p->base.base.icon = eina_stringshare_add(_plugin->base.icon); \
_p->base.base.context = eina_stringshare_add(_plugin->base.context); \
_p->base.base.id = eina_stringshare_add(_plugin->base.id); \
}
}
#define EVRY_PLUGIN_FREE(_p) if (_p) evry->plugin_free(EVRY_PLUGIN(_p))
@ -254,7 +255,7 @@ typedef void (*Evry_Item_Free_Cb) (Evry_Item *it);
/*** Evry_Action macros ***/
#define EVRY_ACTION_NEW(_name, _in1, _in2, _icon, _action, _check) \
evry->action_new(_name, _(_name), _in1, _in2, _icon, _action, _check)
evry->action_new(N_(_name), _(_name), _in1, _in2, _icon, _action, _check)
#define EVRY_ACTION_FREE(_act) if (_act) evry->action_free(EVRY_ACTN(_act))

View File

@ -1052,61 +1052,61 @@ _plugins_init(const Evry_API *api)
evry->plugin_register(p, EVRY_PLUGIN_ACTION, 1);
_plugins = eina_list_append(_plugins, p);
act = EVRY_ACTION_NEW(N_("Launch"),
act = EVRY_ACTION_NEW("Launch",
EVRY_TYPE_APP, 0,
"system-run",
_exec_app_action,
_exec_app_check_item);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Open File..."),
act = EVRY_ACTION_NEW("Open File...",
EVRY_TYPE_APP, EVRY_TYPE_FILE,
"document-open",
_exec_app_action,
_exec_app_check_item);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Run in Terminal"),
act = EVRY_ACTION_NEW("Run in Terminal",
EVRY_TYPE_APP, 0,
"system-run",
_exec_term_action,
_exec_term_check_item);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Edit Application Entry"),
act = EVRY_ACTION_NEW("Edit Application Entry",
EVRY_TYPE_APP, 0,
"everything-launch",
_edit_app_action,
_edit_app_check_item);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("New Application Entry"),
act = EVRY_ACTION_NEW("New Application Entry",
EVRY_TYPE_APP, 0,
"everything-launch",
_new_app_action,
_new_app_check_item);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Run with Sudo"),
act = EVRY_ACTION_NEW("Run with Sudo",
EVRY_TYPE_APP, 0,
"system-run",
_exec_sudo_action, NULL);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Open with..."),
act = EVRY_ACTION_NEW("Open with...",
EVRY_TYPE_FILE, EVRY_TYPE_APP,
"everything-launch",
_exec_file_action, NULL);
_act_open_with = EVRY_ITEM(act);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Open Terminal here"),
act = EVRY_ACTION_NEW("Open Terminal here",
EVRY_TYPE_FILE, 0,
"system-run",
_open_term_action, NULL);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Run Executable"),
act = EVRY_ACTION_NEW("Run Executable",
EVRY_TYPE_FILE, 0,
"system-run",
_run_executable,

View File

@ -30,7 +30,7 @@ evry_plug_clipboard_init(void)
if (!win) return EINA_FALSE;
//FIXME: Icon name doesn't follow FDO Spec
act = EVRY_ACTION_NEW(N_("Copy to Clipboard"),
act = EVRY_ACTION_NEW("Copy to Clipboard",
EVRY_TYPE_TEXT, 0,
"everything-clipboard",
_action, _check_item);

View File

@ -1325,30 +1325,30 @@ _plugins_init(const Evry_API *api)
if (_register) evry->action_register(act, prio++); \
_actions = eina_list_append(_actions, act); \
ACTION_NEW(N_("Copy To ..."), EVRY_TYPE_FILE, "go-next",
ACTION_NEW("Copy To ...", EVRY_TYPE_FILE, "go-next",
_file_copy_action, NULL, 1);
act->it2.subtype = EVRY_TYPE_DIR;
EVRY_ITEM_DATA_INT_SET(act, ACT_COPY);
ACTION_NEW(N_("Move To ..."), EVRY_TYPE_FILE, "go-next",
ACTION_NEW("Move To ...", EVRY_TYPE_FILE, "go-next",
_file_copy_action, NULL, 1);
act->it2.subtype = EVRY_TYPE_DIR;
EVRY_ITEM_DATA_INT_SET(act, ACT_MOVE);
ACTION_NEW(N_("Move to Trash"), 0, "user-trash",
ACTION_NEW("Move to Trash", 0, "user-trash",
_file_trash_action, NULL, 1);
EVRY_ITEM_DATA_INT_SET(act, ACT_TRASH);
ACTION_NEW(N_("Open Folder (EFM)"), 0, "folder-open",
ACTION_NEW("Open Folder (EFM)", 0, "folder-open",
_open_folder_action, _open_folder_check, 1);
act->remember_context = EINA_TRUE;
ACTION_NEW(N_("Sort by Date"), 0, "go-up",
ACTION_NEW("Sort by Date", 0, "go-up",
_file_sort_action, NULL, 0);
EVRY_ITEM_DATA_INT_SET(act, ACT_SORT_DATE);
act_sort_date = act;
ACTION_NEW(N_("Sort by Name"), 0, "go-up",
ACTION_NEW("Sort by Name", 0, "go-up",
_file_sort_action, NULL, 0);
EVRY_ITEM_DATA_INT_SET(act, ACT_SORT_NAME);
act_sort_name = act;

View File

@ -187,11 +187,9 @@ _plugins_init(const Evry_API *_api)
p->browse = &_browse;
evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 10);
act = EVRY_ACTION_NEW(N_("Show Dialog"), E_SETTINGS, 0,
act = EVRY_ACTION_NEW("Show Dialog", E_SETTINGS, 0,
"preferences-advanced", _action, _action_check);
/* p->actions = eina_list_append(p->actions, act); */
evry->action_register(act, 0);
return EINA_TRUE;

View File

@ -416,7 +416,7 @@ _plugins_init(const Evry_API *_api)
_plug->transient = EINA_TRUE;
evry->plugin_register(_plug, EVRY_PLUGIN_SUBJECT, 2);
act = EVRY_ACTION_NEW(_("Switch to Window"),
act = EVRY_ACTION_NEW("Switch to Window",
EVRY_TYPE_BORDER, 0, "go-next",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_SHOW);
@ -424,28 +424,28 @@ _plugins_init(const Evry_API *_api)
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(_("Iconify"),
act = EVRY_ACTION_NEW("Iconify",
EVRY_TYPE_BORDER, 0, "go-down",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_HIDE);
_actions = eina_list_append(_actions, act);
evry->action_register(act, 2);
act = EVRY_ACTION_NEW(_("Toggle Fullscreen"),
act = EVRY_ACTION_NEW("Toggle Fullscreen",
EVRY_TYPE_BORDER, 0, "view-fullscreen",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_FULLSCREEN);
_actions = eina_list_append(_actions, act);
evry->action_register(act, 4);
act = EVRY_ACTION_NEW(_("Close"),
act = EVRY_ACTION_NEW("Close",
EVRY_TYPE_BORDER, 0, "list-remove",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_CLOSE);
_actions = eina_list_append(_actions, act);
evry->action_register(act, 3);
act = EVRY_ACTION_NEW(_("Send to Desktop"),
act = EVRY_ACTION_NEW("Send to Desktop",
EVRY_TYPE_BORDER, 0, "go-previous",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_TODESK);