예제 #1
0
void
mp_become_primary(struct media_pipe *mp)
{
  mp_init_audio(mp);

  if(media_primary == mp)
    return;

  hts_mutex_lock(&media_mutex);

  assert(mp->mp_flags & MP_PRIMABLE);

  if(media_primary != NULL) {
    prop_set_int(media_primary->mp_prop_primary, 0);

    event_t *e = event_create_action(ACTION_STOP);
    mp_enqueue_event(media_primary, e);
    event_release(e);
  }

  media_primary = mp_retain(mp);

  prop_select(mp->mp_prop_root);
  prop_link(mp->mp_prop_root, media_prop_current);
  prop_set_int(mp->mp_prop_primary, 1);

  hts_mutex_unlock(&media_mutex);
}
예제 #2
0
static prop_t *
settings_multiopt_add(setting_t *s, const char *id, prop_t *o, int selected)
{
  if(selected) {
    if(s->s_sub != NULL)
      prop_select(o);
    else
      mystrset(&s->s_initial_value, id);
  }

  if(s->s_first == NULL)
    s->s_first = strdup(id);
  return o;
}
예제 #3
0
파일: settings.c 프로젝트: Rautz/showtime
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;
}