Don't call ecore_main_loop_quit in a callback, delay.

SVN revision: 16284
This commit is contained in:
sebastid 2005-08-22 14:51:36 +00:00 committed by sebastid
parent 55f7d4b870
commit 72f9486b05
1 changed files with 25 additions and 3 deletions

View File

@ -19,6 +19,8 @@ struct _Main_Data
};
/* local subsystem functions */
static void _e_int_menus_quit (void);
static void _e_int_menus_quit_cb (void *data);
static void _e_int_menus_main_del_hook (void *obj);
static void _e_int_menus_main_about (void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_int_menus_main_run (void *data, E_Menu *m, E_Menu_Item*mi);
@ -47,6 +49,9 @@ static void _e_int_menus_lost_clients_pre_cb (void *data, E_Menu *m);
static void _e_int_menus_lost_clients_free_hook (void *obj);
static void _e_int_menus_lost_clients_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
/* local subsystem globals */
static Ecore_Job *_e_int_menus_quit_job = NULL;
/* externally accessible functions */
E_Menu *
e_int_menus_main_new(void)
@ -246,6 +251,23 @@ e_int_menus_lost_clients_new(void)
}
/* local subsystem functions */
static void
_e_int_menus_quit(void)
{
if (_e_int_menus_quit_job)
{
ecore_job_del(_e_int_menus_quit_job);
_e_int_menus_quit_job = NULL;
}
_e_int_menus_quit_job = ecore_job_add(_e_int_menus_quit_cb, NULL);
}
static void
_e_int_menus_quit_cb(void *data)
{
ecore_main_loop_quit();
}
static void
_e_int_menus_main_del_hook(void *obj)
{
@ -294,13 +316,13 @@ static void
_e_int_menus_main_restart(void *data, E_Menu *m, E_Menu_Item *mi)
{
restart = 1;
ecore_main_loop_quit();
_e_int_menus_quit();
}
static void
_e_int_menus_main_exit(void *data, E_Menu *m, E_Menu_Item *mi)
{
if (!e_util_immortal_check()) ecore_main_loop_quit();
if (!e_util_immortal_check()) _e_int_menus_quit();
}
static void
@ -763,7 +785,7 @@ _e_int_menus_themes_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi)
e_config_save_queue();
restart = 1;
ecore_main_loop_quit();
_e_int_menus_quit();
}
static void