Explorar o código

Add volume signals

jp9000 %!s(int64=11) %!d(string=hai) anos
pai
achega
bdcabc6170
Modificáronse 2 ficheiros con 25 adicións e 2 borrados
  1. 18 2
      libobs/obs-source.c
  2. 7 0
      libobs/obs.c

+ 18 - 2
libobs/obs-source.c

@@ -244,6 +244,7 @@ void obs_source_release(obs_source_t source)
 void obs_source_remove(obs_source_t source)
 {
 	struct obs_core_data *data = &obs->data;
+	struct calldata cd = {0};
 	size_t id;
 
 	pthread_mutex_lock(&data->sources_mutex);
@@ -263,7 +264,11 @@ void obs_source_remove(obs_source_t source)
 
 	pthread_mutex_unlock(&data->sources_mutex);
 
-	obs_source_dosignal(source, "source-remove");
+	calldata_setptr(&cd, "source", source);
+	signal_handler_signal(obs->signals, "source-remove", &cd);
+	signal_handler_signal(source->signals, "remove", &cd);
+	calldata_free(&cd);
+
 	obs_source_release(source);
 }
 
@@ -1179,8 +1184,19 @@ proc_handler_t obs_source_prochandler(obs_source_t source)
 
 void obs_source_setvolume(obs_source_t source, float volume)
 {
-	if (source)
+	if (source) {
+		struct calldata data = {0};
+		calldata_setptr(&data, "source", source);
+		calldata_setfloat(&data, "volume", volume);
+
+		signal_handler_signal(source->signals, "volume", &data);
+		signal_handler_signal(obs->signals, "source-volume", &data);
+
+		volume = calldata_float(&data, "volume");
+		calldata_free(&data);
+
 		source->user_volume = volume;
+	}
 }
 
 void obs_source_set_present_volume(obs_source_t source, float volume)

+ 7 - 0
libobs/obs.c

@@ -801,7 +801,14 @@ void obs_render_main_view(void)
 
 void obs_set_master_volume(float volume)
 {
+	struct calldata data = {0};
 	if (!obs) return;
+
+	calldata_setfloat(&data, "volume", volume);
+	signal_handler_signal(obs->signals, "master-volume", &data);
+	volume = calldata_float(&data, "volume");
+	calldata_free(&data);
+
 	obs->audio.user_volume = volume;
 }