瀏覽代碼

libobs: Allow audio-io callback self-removal

Allows audio-io callbacks to remove themselves while in a callback.
jp9000 10 年之前
父節點
當前提交
693962a468
共有 1 個文件被更改,包括 3 次插入3 次删除
  1. 3 3
      libobs/media-io/audio-io.c

+ 3 - 3
libobs/media-io/audio-io.c

@@ -290,8 +290,8 @@ static inline void do_audio_output(struct audio_output *audio,
 
 	pthread_mutex_lock(&audio->input_mutex);
 
-	for (size_t i = 0; i < mix->inputs.num; i++) {
-		struct audio_input *input = mix->inputs.array+i;
+	for (size_t i = mix->inputs.num; i > 0; i--) {
+		struct audio_input *input = mix->inputs.array+(i-1);
 
 		if (resample_audio_output(input, &data))
 			input->callback(input->param, mix_idx, &data);
@@ -557,7 +557,7 @@ int audio_output_open(audio_t **audio, struct audio_output_info *info)
 		goto fail;
 	if (pthread_mutex_init(&out->line_mutex, &attr) != 0)
 		goto fail;
-	if (pthread_mutex_init(&out->input_mutex, NULL) != 0)
+	if (pthread_mutex_init(&out->input_mutex, &attr) != 0)
 		goto fail;
 	if (os_event_init(&out->stop_event, OS_EVENT_TYPE_MANUAL) != 0)
 		goto fail;