EAPI void emotion_object_last_position_save(Evas_Object *obj) { Smart_Data *sd; const char *tmp; E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME); if (!sd->file) return; if (!strncmp(sd->file, "file://", 7)) tmp = sd->file + 7; else if (!strstr(sd->file, "://")) tmp = sd->file; else return; #ifdef HAVE_EIO if (sd->save_xattr) return; EINA_REFCOUNT_REF(sd); sd->save_xattr = eio_file_xattr_double_set(tmp, "user.e.time_seek", emotion_object_position_get(obj), 0, _eio_save_xattr_done, _eio_save_xattr_error, sd); #else if (eina_xattr_double_set(tmp, "user.e.time_seek", emotion_object_position_get(obj), 0)) evas_object_smart_callback_call(obj, SIG_POSITION_SAVE_SUCCEED, NULL); else evas_object_smart_callback_call(obj, SIG_POSITION_SAVE_FAILED, NULL); #endif }
static void _eio_monitor_error(Eio_Monitor *monitor, int error) { Eio_Monitor_Error *ev; ev = calloc(1, sizeof (Eio_Monitor_Error)); if (!ev) return; ev->monitor = monitor; EINA_REFCOUNT_REF(ev->monitor); ev->error = error; ecore_event_add(EIO_MONITOR_ERROR, ev, _eio_monitor_error_cleanup_cb, NULL); }
/** * @brief Create a new net object * @param name The name of the underlying device (eth0, br1, etc) * @return A newly allocated net object, or NULL on failure * * This function creates a new net object based on @p name. * Only the most minimal lookups are performed at creation in order * to save memory. */ Eeze_Net * eeze_net_new(const char *name) { const char *syspath = NULL; const char *idx; _udev_enumerate *en; _udev_list_entry *devs, *cur; _udev_device *device = NULL; Eeze_Net *net; net = eina_hash_find(eeze_nets, name); if (net) { EINA_REFCOUNT_REF(net); return net; } en = udev_enumerate_new(udev); udev_enumerate_add_match_sysname(en, name); udev_enumerate_add_match_subsystem(en, "net"); udev_enumerate_scan_devices(en); devs = udev_enumerate_get_list_entry(en); udev_list_entry_foreach(cur, devs) { const char *devname, *test; devname = udev_list_entry_get_name(cur); test = strrchr(devname, '/'); if (strcmp(++test, name)) continue; device = _new_device(devname); syspath = eina_stringshare_add(name); break; } if (!device) return NULL; net = calloc(1, sizeof(Eeze_Net)); if (!net) return NULL; EINA_REFCOUNT_INIT(net); net->device = device; net->syspath = syspath; net->name = eina_stringshare_add(name); idx = udev_device_get_sysattr_value(net->device, "ifindex"); net->index = atoi(idx); eina_hash_add(eeze_nets, name, net); udev_enumerate_unref(en); return net; }