void settings_multiopt_initiate(setting_t *s, prop_callback_string_t *cb, void *opaque, prop_courier_t *pc, htsmsg_t *store, settings_saver_t *saver, void *saver_opaque) { const char *str = store ? htsmsg_get_str(store, s->s_id) : NULL; prop_t *o = str ? prop_find(s->s_val, str, NULL) : NULL; if(o == NULL && s->s_initial_value != NULL) o = prop_find(s->s_val, s->s_initial_value, NULL); if(o == NULL && s->s_first != NULL) o = prop_find(s->s_val, s->s_first, NULL); if(o != NULL) { prop_select(o); rstr_t *name = prop_get_name(o); cb(opaque, rstr_get(name)); rstr_release(name); prop_ref_dec(o); } s->s_callback = cb; s->s_opaque = opaque; mystrset(&s->s_initial_value, NULL); s->s_sub = prop_subscribe(PROP_SUB_NO_INITIAL_UPDATE, PROP_TAG_CALLBACK, callback_opt, s, PROP_TAG_ROOT, s->s_val, PROP_TAG_COURIER, pc, NULL); s->s_store = store; s->s_saver = saver; s->s_saver_opaque = saver_opaque; }
void settings_multiopt_initiate(setting_t *s, htsmsg_t *store, settings_saver_t *saver, void *saver_opaque) { const char *str = htsmsg_get_str(store, s->s_id); if(str != NULL) { prop_t *o = prop_find(s->s_val, str, NULL); if(o != NULL) prop_select_ex(o, NULL, s->s_sub); } s->s_store = store; s->s_saver = saver; s->s_saver_opaque = saver_opaque; }