efsd respawnign by e17 is more robust now...

SVN revision: 5078
This commit is contained in:
Carsten Haitzler 2001-08-09 23:48:40 +00:00
parent 3d29d46f37
commit 3718f7ecb2
4 changed files with 56 additions and 17 deletions

View File

@ -21,6 +21,7 @@ static char cfg_apps_menu_db[4096] = "";
static char cfg_menus_dir[4096] = "";
static char cfg_entries_dir[4096] = "";
static char cfg_selections_dir[4096] = "";
static char cfg_scrollbars_dir[4096] = "";
static char cfg_user_dir[4096] = "";
static char cfg_images_dir[4096] = "";
static char cfg_backgrounds_dir[4096] = "";
@ -60,6 +61,8 @@ e_config_get(char *type)
PACKAGE_DATA_DIR"/data/config/appearance/default/entries/");
E_CONF("selections", cfg_selections_dir,
PACKAGE_DATA_DIR"/data/config/appearance/default/selections/");
E_CONF("scrollbars", cfg_scrollbars_dir,
PACKAGE_DATA_DIR"/data/config/appearance/default/scrollbars/");
E_CONF("images", cfg_images_dir,
PACKAGE_DATA_DIR"/data/images/");
E_CONF("backgrounds", cfg_backgrounds_dir,
@ -120,6 +123,8 @@ e_config_set_user_dir(char *dir)
cfg_apps_menu_db[0]= 0;
cfg_menus_dir[0] = 0;
cfg_entries_dir[0] = 0;
cfg_selections_dir[0] = 0;
cfg_scrollbars_dir[0] = 0;
cfg_user_dir[0] = 0;
cfg_images_dir[0] = 0;
cfg_backgrounds_dir[0] = 0;

View File

@ -16,12 +16,14 @@ e_fs_child_handle(Eevent *ev)
Ev_Child *e;
e = ev->event;
printf("pid went splat! (%i)\n", e->pid);
if (e->pid == efsd_pid)
{
efsd_close(ec);
efsd_pid = 0;
printf("it was efsd!\n");
if (ec) efsd_close(ec);
ec = NULL;
_e_fs_restarter(0, NULL);
efsd_pid = 0;
_e_fs_restarter(1, NULL);
}
}
@ -53,8 +55,7 @@ _e_fs_fd_handle(int fd)
efsd_close(ec);
e_del_event_fd(fd);
ec = NULL;
if (efsd_pid == -2)
_e_fs_restarter(0, NULL);
_e_fs_restarter(0, NULL);
/* FIXME: need to queue a popup dialog here saying */
/* efsd went wonky */
printf("EEEEEEEEEEK efsd went wonky. Bye bye efsd.\n");
@ -67,7 +68,7 @@ _e_fs_fd_handle(int fd)
printf("fs... too much time spent..\n");
break;
}
}
}
}
static void
@ -75,9 +76,14 @@ _e_fs_restarter(int val, void *data)
{
if (ec) return;
ec = efsd_open();
printf("restart efsd...\n");
if ((!ec) && (val > 0))
{
if (efsd_pid <= 0) efsd_pid = e_exec_run("efsd -f");
if (efsd_pid <= 0)
{
efsd_pid = e_exec_run("efsd -f");
printf("launch efsd... %i\n", efsd_pid);
}
if (efsd_pid > 0) ec = efsd_open();
}
if (ec)

View File

@ -1,4 +1,5 @@
#include "scrollbar.h"
#include "config.h"
static void e_scrollbar_recalc(E_Scrollbar *sb);
static void e_scrollbar_setup_bits(E_Scrollbar *sb);
@ -6,15 +7,28 @@ static void e_scrollbar_setup_bits(E_Scrollbar *sb);
static void
e_scrollbar_recalc(E_Scrollbar *sb)
{
sb = NULL;
UN(sb);
}
static void
e_scrollbar_setup_bits(E_Scrollbar *sb)
{
/* sb->base = ebits_load("");*/
/* sb->bar = ebits_load("");*/
sb = NULL;
char buf[4096];
if (sb->direction == 1)
{
sprintf(buf, "%s/scroll_base_v.bits.db", e_config_get("scrollbars"));
sb->base = ebits_load(buf);
sprintf(buf, "%s/scroll_bar_v.bits.db", e_config_get("scrollbars"));
sb->bar = ebits_load(buf);
}
else
{
sprintf(buf, "%s/scroll_base_h.bits.db", e_config_get("scrollbars"));
sb->base = ebits_load(buf);
sprintf(buf, "%s/scroll_bar_h.bits.db", e_config_get("scrollbars"));
sb->bar = ebits_load(buf);
}
}
E_Scrollbar *

View File

@ -1488,12 +1488,26 @@ e_view_handle_fs_restart(void *data)
evas_list_free(icons);
}
if (e_fs_get_connection())
v->monitor_id = efsd_start_monitor(e_fs_get_connection(), v->dir,
efsd_ops(2,
efsd_op_get_stat(),
efsd_op_get_filetype()
),
TRUE);
{
if (v->geom_get.busy)
{
v->geom_get.x = efsd_get_metadata(e_fs_get_connection(),
"/view/x", v->dir, EFSD_INT);
v->geom_get.y = efsd_get_metadata(e_fs_get_connection(),
"/view/y", v->dir, EFSD_INT);
v->geom_get.w = efsd_get_metadata(e_fs_get_connection(),
"/view/w", v->dir, EFSD_INT);
v->geom_get.h = efsd_get_metadata(e_fs_get_connection(),
"/view/h", v->dir, EFSD_INT);
}
v->monitor_id = efsd_start_monitor(e_fs_get_connection(), v->dir,
efsd_ops(2,
efsd_op_get_stat(),
efsd_op_get_filetype()
),
TRUE);
v->is_listing = 1;
}
printf("restarted monitor id (connection = %p), %i for %s\n", e_fs_get_connection(), v->monitor_id, v->dir);
v->is_listing = 1;
}