Merge branch 'tizen' into tizen_8.0 69/300669/1 accepted/tizen/8.0/unified/20231103.040844
authorSeungbae Shin <seungbae.shin@samsung.com>
Tue, 31 Oct 2023 06:03:38 +0000 (15:03 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Tue, 31 Oct 2023 06:03:38 +0000 (15:03 +0900)
Change-Id: I0a162a79865dbdafa21629f03b3e09062dac5141

packaging/pulseaudio.spec
src/modules/alsa/module-alsa-card.c
src/modules/module-udev-detect.c

index a897e31..ffdfae7 100644 (file)
@@ -4,7 +4,7 @@
 Name:             pulseaudio
 Summary:          Improved Linux sound server
 Version:          15.0
-Release:          22
+Release:          23
 Group:            Multimedia/Audio
 License:          LGPL-2.1
 URL:              http://pulseaudio.org
index b148725..8ffc03a 100755 (executable)
@@ -165,7 +165,8 @@ struct userdata {
     pa_alsa_ucm_config ucm;
 
 #ifdef __TIZEN__
-    bool use_tizen_hal;
+    bool use_tizen_hal_sink;
+    bool use_tizen_hal_source;
 #endif
 };
 
@@ -205,12 +206,30 @@ out:
     return ret;
 }
 
+static void pa_get_use_tizen_hal_info(const char *use_tizen_hal, bool *use_tizen_hal_sink, bool *use_tizen_hal_source) {
+    pa_assert(use_tizen_hal_sink);
+    pa_assert(use_tizen_hal_source);
+
+    if (!use_tizen_hal)
+        return;
+
+    *use_tizen_hal_sink = false;
+    *use_tizen_hal_source = false;
+
+    if (pa_streq(use_tizen_hal, "both"))
+        *use_tizen_hal_sink = *use_tizen_hal_source = true;
+    else if (pa_streq(use_tizen_hal, "source"))
+        *use_tizen_hal_source = true;
+    else if (pa_streq(use_tizen_hal, "sink"))
+        *use_tizen_hal_sink = true;
+}
+
 static pa_sink *pa_dl_alsa_sink_new(pa_module *m, pa_modargs *ma, const char *driver, pa_card *card, pa_alsa_mapping *mapping) {
     pa_sink *s;
     dl_sink_new_t dl_sink_new;
     struct userdata *u = (struct userdata *)m->userdata;
 
-    if (!u->use_tizen_hal)
+    if (!u->use_tizen_hal_sink)
         goto exit;
 
     if (!(dl_sink_new = pa_dl_get_tizenaudio_function(PA_TIZEN_HAL_SINK2_NEW))) {
@@ -238,7 +257,7 @@ static pa_source *pa_dl_alsa_source_new(pa_module *m, pa_modargs *ma, const char
     dl_source_new_t dl_source_new;
     struct userdata *u = (struct userdata *)m->userdata;
 
-    if (!u->use_tizen_hal)
+    if (!u->use_tizen_hal_source)
         goto exit;
 
     if (!(dl_source_new = pa_dl_get_tizenaudio_function(PA_TIZEN_HAL_SOURCE2_NEW))) {
@@ -274,7 +293,7 @@ static void pa_dl_alsa_sink_free(pa_sink *s) {
     m = s->module;
     u = m->userdata;
 
-    if (u->use_tizen_hal) {
+    if (u->use_tizen_hal_sink) {
         dl_sink_free = pa_dl_get_tizenaudio_function(PA_TIZEN_HAL_SINK2_FREE);
         dl_sink_free(s);
         return;
@@ -295,7 +314,7 @@ static void pa_dl_alsa_source_free(pa_source *s) {
     m = s->module;
     u = m->userdata;
 
-    if (u->use_tizen_hal) {
+    if (u->use_tizen_hal_source) {
         dl_source_free = pa_dl_get_tizenaudio_function(PA_TIZEN_HAL_SOURCE2_FREE);
         dl_source_free(s);
         return;
@@ -1133,10 +1152,8 @@ int pa__init(pa_module *m) {
     }
 
 #ifdef __TIZEN__
-    if (pa_modargs_get_value_boolean(u->modargs, "use_tizen_hal", &u->use_tizen_hal) < 0) {
-        pa_log("Failed to parse use_tizen_hal= argument.");
-        goto fail;
-    }
+    pa_get_use_tizen_hal_info(pa_modargs_get_value(u->modargs, "use_tizen_hal", NULL),
+                                &u->use_tizen_hal_sink, &u->use_tizen_hal_source);
 #endif
 
     /* Force ALSA to reread its configuration. This matters if our device
index bfad6a2..ad76f12 100644 (file)
@@ -49,7 +49,7 @@ PA_MODULE_USAGE(
         "use_ucm=<use ALSA UCM for card configuration?> "
         "avoid_resampling=<use stream original sample rate if possible?>"
 #ifdef __TIZEN__
-        "use_tizen_hal=<use tizen hal through tizenaudio-sink2/source2>"
+        "use_tizen_hal=<use tizen hal through tizenaudio-sink2/source2, it must be 'both', 'sink', 'source'>"
 #endif
         );
 
@@ -84,7 +84,7 @@ struct userdata {
     int inotify_fd;
     pa_io_event *inotify_io;
 #ifdef __TIZEN__
-    bool use_tizen_hal;
+    char *use_tizen_hal;
 #endif
 };
 
@@ -419,7 +419,7 @@ static void card_changed(struct userdata *u, struct udev_device *dev) {
                      "name=\"%s\" "
                      "card_name=\"%s\" "
 #ifdef __TIZEN__
-                     "use_tizen_hal=%s "
+                     "use_tizen_hal=\"%s\" "
 #endif
                      "namereg_fail=false "
                      "tsched=%s "
@@ -433,7 +433,7 @@ static void card_changed(struct userdata *u, struct udev_device *dev) {
                      n,
                      d->card_name,
 #ifdef __TIZEN__
-                     pa_yes_no(u->use_tizen_hal),
+                     u->use_tizen_hal,
 #endif
                      pa_yes_no(u->use_tsched),
                      pa_yes_no(u->fixed_latency_range),
@@ -922,10 +922,7 @@ int pa__init(pa_module *m) {
     u->avoid_resampling = avoid_resampling;
 
 #ifdef __TIZEN__
-    if (pa_modargs_get_value_boolean(ma, "use_tizen_hal", &u->use_tizen_hal) < 0) {
-        pa_log("Failed to parse use_tizen_hal= argument.");
-        goto fail;
-    }
+    u->use_tizen_hal = pa_xstrdup(pa_modargs_get_value(ma, "use_tizen_hal", "empty"));
 #endif
 
     if (!(u->udev = udev_new())) {
@@ -1037,5 +1034,9 @@ void pa__done(pa_module *m) {
     if (u->devices)
         pa_hashmap_free(u->devices);
 
+#ifdef __TIZEN__
+    pa_xfree(u->use_tizen_hal);
+#endif
+
     pa_xfree(u);
 }