Explorar el Código

Add function to get info on a specific source to pulse wrapper

fryshorts hace 11 años
padre
commit
bbc62f2602

+ 19 - 0
plugins/linux-pulseaudio/pulse-wrapper.c

@@ -181,6 +181,25 @@ int_fast32_t pulse_get_source_info_list(pa_source_info_cb_t cb, void* userdata)
 	return 0;
 	return 0;
 }
 }
 
 
+int_fast32_t pulse_get_source_info(pa_source_info_cb_t cb, const char *name,
+	void *userdata)
+{
+	if (pulse_context_ready() < 0)
+		return -1;
+
+	pulse_lock();
+
+	pa_operation *op = pa_context_get_source_info_by_name(
+		pulse_context, name, cb, userdata);
+	while (pa_operation_get_state(op) == PA_OPERATION_RUNNING)
+		pulse_wait();
+	pa_operation_unref(op);
+
+	pulse_unlock();
+
+	return 0;
+}
+
 int_fast32_t pulse_get_server_info(pa_server_info_cb_t cb, void* userdata)
 int_fast32_t pulse_get_server_info(pa_server_info_cb_t cb, void* userdata)
 {
 {
 	if (pulse_context_ready() < 0)
 	if (pulse_context_ready() < 0)

+ 19 - 0
plugins/linux-pulseaudio/pulse-wrapper.h

@@ -93,6 +93,25 @@ void pulse_accept();
  */
  */
 int_fast32_t pulse_get_source_info_list(pa_source_info_cb_t cb, void *userdata);
 int_fast32_t pulse_get_source_info_list(pa_source_info_cb_t cb, void *userdata);
 
 
+/**
+ * Request source information from a specific source
+ *
+ * The function will block until the operation was executed and the mainloop
+ * called the provided callback function.
+ *
+ * @param cb pointer to the callback function
+ * @param name the source name to get information for
+ * @param userdata pointer to userdata the callback will be called with
+ *
+ * @return negative on error
+ *
+ * @note The function will block until the server context is ready.
+ *
+ * @warning call without active locks
+ */
+int_fast32_t pulse_get_source_info(pa_source_info_cb_t cb, const char *name,
+	void *userdata);
+
 /**
 /**
  * Request server information
  * Request server information
  *
  *