tizenaudio-policy: Add missing unsuspend sink/source due to INTERNAL cause 92/205792/3 submit/tizen/20190509.090025
authorSangchul Lee <sc11.lee@samsung.com>
Thu, 9 May 2019 03:23:52 +0000 (12:23 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Thu, 9 May 2019 08:56:26 +0000 (17:56 +0900)
Tizen specific logic regarding to unsuspending automatically
in case of PA_SUSPEND_INTERNAL cause has been removed, so it
has to be added for valid behavior when starting a stream
later on.

[Version] 11.1.44
[Issue type] Bug fix

Change-Id: Ie0c48b7990a2499cad31669e4c4f5c1caea1f1ed
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/pulseaudio-modules-tizen.spec
src/module-tizenaudio-policy.c

index 4e607fb..1b6a094 100644 (file)
@@ -1,6 +1,6 @@
 Name:             pulseaudio-modules-tizen
 Summary:          Pulseaudio modules for Tizen
-Version:          11.1.42
+Version:          11.1.44
 Release:          0
 Group:            Multimedia/Audio
 License:          LGPL-2.1+
index a60be73..d3b106b 100644 (file)
@@ -934,7 +934,6 @@ static void route_change_move_streams(struct userdata *u, pa_stream_manager_hook
         return;
     if (!data->stream)
         return;
-
     if (!IS_ROLE_COMMUNICATION(data->stream_role))
         return;
 
@@ -943,20 +942,22 @@ static void route_change_move_streams(struct userdata *u, pa_stream_manager_hook
     if (data->stream_type == STREAM_SINK_INPUT) {
         if (!(sink = pa_tz_device_get_sink(device, DEVICE_ROLE_NORMAL)) ||
             !(dst_sink = pa_tz_device_get_sink(device, device_role)) ||
-            sink == dst_sink)
+            sink == dst_sink) {
             pa_log_info("[ROUTE][MOVE][%s] no need to move streams, sink(%p), dst_sink(%p)", data->stream_role, sink, dst_sink);
-        else
-            streams = sink->inputs;
+            return;
+        }
+        streams = sink->inputs;
     } else if (data->stream_type == STREAM_SOURCE_OUTPUT) {
         if (!(source = pa_tz_device_get_source(device, DEVICE_ROLE_NORMAL)) ||
             !(dst_source = pa_tz_device_get_source(device, device_role)) ||
-            source == dst_source)
+            source == dst_source) {
             pa_log_info("[ROUTE][MOVE][%s] no need to move streams, source(%p), dst_source(%p)", data->stream_role, source, dst_source);
-        else
-            streams = source->outputs;
+            return;
+        }
+        streams = source->outputs;
     }
 
-    if (!streams)
+    if (!streams || (pa_idxset_size(streams) == 0))
         return;
 
     /* move other streams that belong to the device of NORMAL role */
@@ -996,7 +997,7 @@ static void route_change_rollback_streams(struct userdata *u, pa_stream_manager_
     /* if it's from new_data, return here */
     if (!device || data->origins_from_new_data)
         return;
-    if (!data->stream || !data->idx_streams)
+    if (!data->stream || !data->idx_streams || pa_idxset_size(data->idx_streams) == 0)
         return;
     if (!IS_AUTO_ROUTE_TYPE_SERIES(data->route_type))
         return;
@@ -1004,9 +1005,11 @@ static void route_change_rollback_streams(struct userdata *u, pa_stream_manager_
     if (data->stream_type == STREAM_SINK_INPUT) {
         if (!(sink = pa_tz_device_get_sink(device, data->device_role)))
             return;
+        pa_sink_suspend(sink, false, PA_SUSPEND_INTERNAL);
     } else if (data->stream_type == STREAM_SOURCE_OUTPUT) {
         if (!(source = pa_tz_device_get_source(device, data->device_role)))
             return;
+        pa_source_suspend(source, false, PA_SUSPEND_INTERNAL);
     }
 
     PA_IDXSET_FOREACH(s, data->idx_streams, idx) {