Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}