big eeze mounting overhaul: things will "probably" work now. status increment to 95% on http://trac.enlightenment.org/e/wiki/Release

SVN revision: 62881
This commit is contained in:
Mike Blumenkrantz 2011-08-26 20:35:22 +00:00
parent b7967f2941
commit 65a1d27500
2 changed files with 49 additions and 16 deletions

View File

@ -136,7 +136,8 @@ _e_fm_main_eeze_cb_vol_mounted(void *user_data __UNUSED__,
char *buf;
int size;
v = eeze_disk_data_get(ev->disk);
//v = eeze_disk_data_get(ev->disk); THIS IS BROKEN DON'T ASK WHY
v = _e_fm_main_eeze_volume_find_fast(eeze_disk_syspath_get(ev->disk));
if (v->guard)
{
ecore_timer_del(v->guard);
@ -186,8 +187,8 @@ _e_fm_main_eeze_cb_vol_error(void *user_data __UNUSED__,
char *buf;
int size;
v = eeze_disk_data_get(ev->disk);
//v = eeze_disk_data_get(ev->disk); THIS IS BROKEN DON'T ASK WHY
v = _e_fm_main_eeze_volume_find_fast(eeze_disk_syspath_get(ev->disk));
if (v->mounted)
{
size = _e_fm_main_eeze_format_error_msg(&buf, v, "org.enlightenment.fm2.UnmountError", ev->message);
@ -213,7 +214,8 @@ _e_fm_main_eeze_cb_vol_unmounted(void *user_data __UNUSED__,
int size;
E_Volume *v;
v = eeze_disk_data_get(ev->disk);
v = _e_fm_main_eeze_volume_find_fast(eeze_disk_syspath_get(ev->disk));
//v = eeze_disk_data_get(ev->disk); THIS IS BROKEN DON'T ASK WHY
if (v->guard)
{
ecore_timer_del(v->guard);
@ -317,7 +319,10 @@ _e_fm_main_eeze_volume_add(const char *syspath,
v->uuid = eeze_disk_uuid_get(v->disk);
v->label = eeze_disk_label_get(v->disk);
v->fstype = eeze_disk_fstype_get(v->disk);
v->parent = eeze_disk_udev_get_parent(v->disk);
str = eeze_disk_udev_get_sysattr(v->disk, "queue/hw_sector_size");
if (!str)
str = eeze_udev_syspath_get_sysattr(v->parent, "queue/hw_sector_size");
if (str)
{
int64_t sector_size, size;
@ -348,7 +353,6 @@ _e_fm_main_eeze_volume_add(const char *syspath,
v->partition_label = eeze_disk_udev_get_property(v->disk, "ID_FS_LABEL");
}
v->parent = eeze_disk_udev_get_parent(v->disk);
{
E_Storage *s;
s = e_storage_find(v->parent);
@ -356,9 +360,13 @@ _e_fm_main_eeze_volume_add(const char *syspath,
" partition: %d\n partition_number: %d\n partition_label: %s\n mounted: %d\n mount_point: %s",
v->udi, v->uuid, v->fstype, v->size, v->label, v->partition, v->partition_number,
v->partition ? v->partition_label : "(not a partition)", v->mounted, v->mount_point);
if (s)
v->storage = s;
else if (v->parent)
s = v->storage = _e_fm_main_eeze_storage_add(v->parent);
if (s)
{
v->storage = s;
s->volumes = eina_list_append(s->volumes, v);
INF(" for storage: %s", s->udi);
}
@ -526,7 +534,8 @@ _scanner_poll(void *data __UNUSED__)
const char *tmp;
struct stat st;
char buf[1024];
if (svr) return EINA_FALSE;
tmp = getenv("TMPDIR");
if (!tmp) tmp = "/tmp";
@ -540,16 +549,19 @@ _scanner_poll(void *data __UNUSED__)
}
static Eina_Bool
_scanner_add(void *data __UNUSED__, int type __UNUSED__, Ecore_Exe_Event_Add *ev __UNUSED__)
_scanner_add(void *data, int type __UNUSED__, Ecore_Exe_Event_Add *ev)
{
if (!_scanner_poll(NULL))
if (data != ecore_exe_data_get(ev->exe)) return ECORE_CALLBACK_PASS_ON;
INF("Scanner started");
if (_scanner_poll(NULL))
ecore_poller_add(ECORE_POLLER_CORE, 32, (Ecore_Task_Cb)_scanner_poll, NULL);
return ECORE_CALLBACK_RENEW;
}
static Eina_Bool
_scanner_del(void *data __UNUSED__, int type __UNUSED__, Ecore_Exe_Event_Del *ev __UNUSED__)
_scanner_del(void *data, int type __UNUSED__, Ecore_Exe_Event_Del *ev)
{
if (data != ecore_exe_data_get(ev->exe)) return ECORE_CALLBACK_PASS_ON;
if (!svr)
{
INF("scanner connection dead, exiting");
@ -606,7 +618,7 @@ _scanner_run(void)
CRI("Could not locate scanner at '%s'! EFM exiting.", buf);
exit(1);
}
scanner = ecore_exe_pipe_run(buf, ECORE_EXE_NOT_LEADER, NULL);
scanner = ecore_exe_pipe_run(buf, ECORE_EXE_NOT_LEADER, pfx);
}
@ -671,8 +683,8 @@ _e_fm_main_eeze_init(void)
ecore_event_handler_add(EEZE_EVENT_DISK_EJECT, (Ecore_Event_Handler_Cb)_e_fm_main_eeze_cb_vol_ejected, NULL);
ecore_event_handler_add(EEZE_EVENT_DISK_ERROR, (Ecore_Event_Handler_Cb)_e_fm_main_eeze_cb_vol_error, NULL);
ecore_event_handler_add(ECORE_EXE_EVENT_ADD, (Ecore_Event_Handler_Cb)_scanner_add, NULL);
ecore_event_handler_add(ECORE_EXE_EVENT_DEL, (Ecore_Event_Handler_Cb)_scanner_del, NULL);
ecore_event_handler_add(ECORE_EXE_EVENT_ADD, (Ecore_Event_Handler_Cb)_scanner_add, pfx);
ecore_event_handler_add(ECORE_EXE_EVENT_DEL, (Ecore_Event_Handler_Cb)_scanner_del, pfx);
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_scanner_con, NULL);
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, (Ecore_Event_Handler_Cb)_scanner_disc, NULL);
@ -733,7 +745,20 @@ _e_fm_main_eeze_storage_add(const char *syspath)
if (_e_fm_main_eeze_storage_find_fast(syspath)) return NULL;
str = eeze_udev_syspath_get_property(syspath, "ID_TYPE");
if (!str) return NULL;
if (!str)
{
const char *p, *subsystem;
p = eeze_udev_syspath_get_parent(syspath);
if (!p) return NULL;
subsystem = eeze_udev_syspath_get_subsystem(p);
if ((!subsystem) || strcmp(subsystem, "mmc"))
{
eina_stringshare_del(subsystem);
return NULL;
}
eina_stringshare_del(subsystem);
}
eina_stringshare_del(str);
s = calloc(1, sizeof(E_Storage));
if (!s) return NULL;
@ -746,15 +771,21 @@ _e_fm_main_eeze_storage_add(const char *syspath)
{
case EEZE_DISK_TYPE_CDROM:
s->drive_type = eina_stringshare_add("cdrom");
break;
case EEZE_DISK_TYPE_USB:
s->drive_type = eina_stringshare_add("usb");
break;
case EEZE_DISK_TYPE_INTERNAL:
s->drive_type = eina_stringshare_add("ata");
break;
case EEZE_DISK_TYPE_FLASH:
s->drive_type = eina_stringshare_add("sd_mmc");
break;
default:
s->drive_type = eina_stringshare_add("unknown");
break;
}
s->model = eina_stringshare_add(eeze_disk_model_get(s->disk));
if (!s->model) goto error;
s->vendor = eina_stringshare_add(eeze_disk_vendor_get(s->disk));
s->serial = eina_stringshare_add(eeze_disk_serial_get(s->disk));
if (!s->serial) ERR("Error getting serial for %s", s->udi);

View File

@ -68,6 +68,8 @@ _e_fm2_device_volume_setup(E_Volume *v)
else
snprintf(label, sizeof(label) - 1, "%s", v->storage->vendor);
}
else if (v->storage->drive_type && (!strcmp(v->storage->drive_type, "sd_mmc")))
snprintf(label, sizeof(label) - 1, "Flash Card - %s", size);
else
snprintf(label, sizeof(label), _("Unknown Volume"));
@ -79,7 +81,7 @@ _e_fm2_device_volume_setup(E_Volume *v)
icon = v->storage->icon.volume;
else
{
if ((!v->storage->drive_type) || (!strcmp(v->storage->drive_type, "disk")))
if ((!v->storage->drive_type) || (!strcmp(v->storage->drive_type, "disk")) || (!strcmp(v->storage->drive_type, "partition")))
{
if (v->storage->removable == 0)
icon = "drive-harddisk";