/* on_value_changed */ void on_value_changed(GtkWidget * widget, gpointer data) { Mixer * mixer = data; gdouble value; #ifdef DEBUG fprintf(stderr, "DEBUG: %s(%p, %lf, %p)\n", __func__, (void*)widget, value, (void*)data); #endif value = gtk_range_get_value(GTK_RANGE(widget)); mixer_set_value(mixer, widget, value); }
static void set_volume_slider(struct button *b,struct event *ev) { struct mixer_control *c = (struct mixer_control *)b->user_data; long off=ev->y-b->y; long range=c->max-c->min; long oldvol=mixer_get_value(c); long newvol=range- range*off/b->h; long set; printf("oldvol %d, newvol %d\n",oldvol,newvol); /* don't allow a misplaced key to send the volume to max * in one step */ if(newvol>oldvol) { set=oldvol+range/10; if(set==oldvol) set++; if(set>newvol) set=newvol; } else set = (newvol<0) ? 0 : newvol; mixer_set_value(c,set); render_volume_slider(b); return 0; }