+ pa_operation *op;
+ struct simpleop sop;
+ pa_cvolume vol;
+ double r, l;
+
+ l = *left*PA_VOLUME_NORM/100.0 + 0.5;
+ r = *right*PA_VOLUME_NORM/100.0 + 0.5;
+
+ pa_cvolume_init(&vol); vol.channels = uaudio_channels;
+ switch(uaudio_channels) {
+ case 1: if(r < l) r = l; vol.values[0] = vol.values[1] = r; break;
+ case 2: vol.values[0] = l; vol.values[1] = r; break;
+ default: return;
+ }
+
+ pa_threaded_mainloop_lock(loop);
+ sop.what = "set pulseaudio volume"; sop.donep = 0;
+ op = pa_context_set_sink_input_volume(ctx, strix, &vol, cb_success, &sop);
+ while(!sop.donep) pa_threaded_mainloop_wait(loop);
+ pa_threaded_mainloop_unlock(loop);
+ pa_operation_unref(op);
+
+ pulseaudio_get_volume(left, right);