static void read_mastervol(GtkScaleButton *button, gdouble value, gpointer user_data) { playdeck_t *pd = user_data; extern prop_t *prop_mastervol; /* A bit ugly. We could use prop_get_by_name(), but this is easier */ value = (value - 1) * 75; prop_set_float_ex(prop_mastervol, pd->sub_volume, value, 0); }
static void update_value(glw_slider_t *s, float v, int how) { v = GLW_MAX(0, GLW_MIN(1.0, v)); if(s->p != NULL) prop_set_float_ex(s->p, NULL, v * (s->max - s->min) + s->min, how); else { s->value = v; if(s->bound_widget != NULL) { glw_scroll_t gs; gs.value = s->value; glw_signal0(s->bound_widget, GLW_SIGNAL_SCROLL, &gs); } } }
static gboolean slider_updated(GtkRange *range, GtkScrollType scroll, gdouble value, gpointer user_data) { playdeck_t *pd = user_data; prop_t *p; pd->pos_grabbed = 0; p = prop_get_by_name(PNVEC("global", "media", "current", "currenttime"), 1, NULL); if(p != NULL) { prop_set_float_ex(p, pd->sub_pos, value, 0); prop_ref_dec(p); } return FALSE; }
/** * Sink input updated, reflect master volume and mute status into * showtime's properties. */ static void update_sink_input_info(pa_context *c, const pa_sink_input_info *i, int eol, void *userdata) { pa_audio_mode_t *pam = (pa_audio_mode_t *)userdata; int n; pa_volume_t max = PA_VOLUME_MUTED; if(i == NULL) return; for(n = 0; n < i->volume.channels; n++) { if(i->volume.values[n] > max) max = i->volume.values[n]; } pam->mastervol = max; pam->muted = !!i->mute; prop_set_float_ex(prop_mastervol, pam->sub_mvol, pa_sw_volume_to_dB(pam->mastervol), 0); prop_set_int_ex(prop_mastermute, pam->sub_mute, pam->muted); }
void mp_set_current_time(media_pipe_t *mp, int64_t ts, int epoch, int64_t delta) { if(ts == PTS_UNSET) return; ts -= delta; hts_mutex_lock(&mp->mp_mutex); if(epoch == mp->mp_epoch) { prop_set_float_ex(mp->mp_prop_currenttime, mp->mp_sub_currenttime, ts / 1000000.0); event_ts_t *ets = event_create(EVENT_CURRENT_TIME, sizeof(event_ts_t)); ets->ts = ts; ets->epoch = epoch; mp->mp_seek_base = ts; mp_enqueue_event_locked(mp, &ets->h); event_release(&ets->h); } hts_mutex_unlock(&mp->mp_mutex); }