void QVolumeSlider::mouseMoveEvent(QMouseEvent *event) { event->accept(); float vol_tmp = volume_dB + (event->globalX() - starting_point.x())*ACCELERATION; // limit possible values vol_tmp = std::min(vol_tmp, UPPERLIMIT); vol_tmp = std::max(vol_tmp, LOWERLIMIT); // display volume as number setText(QString().setNum((int)(vol_tmp + 0.5f))); emit signal_volume_changed(vol_tmp); // TODO: dB or linear?? // store reference point for mouse motion starting_point = event->globalPos(); }
static void fader_source_volume_changed(void *vptr, calldata_t *calldata) { struct obs_fader *fader = (struct obs_fader *) vptr; pthread_mutex_lock(&fader->mutex); if (fader->ignore_next_signal) { fader->ignore_next_signal = false; pthread_mutex_unlock(&fader->mutex); return; } signal_handler_t *sh = fader->signals; const float mul = (float)calldata_float(calldata, "volume"); const float db = mul_to_db(mul); fader->cur_db = db; pthread_mutex_unlock(&fader->mutex); signal_volume_changed(sh, fader, db); }