Merge branch 'tizen' into tizen_line_coverage 40/204340/1 tizen_line_coverage
authorSangchul Lee <sc11.lee@samsung.com>
Tue, 23 Apr 2019 07:09:22 +0000 (16:09 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Tue, 23 Apr 2019 07:09:22 +0000 (16:09 +0900)
Change-Id: I860bd7c9d8bf82b4dfb2b50ea5bce7ea0fb482d3

1  2 
src/sound_manager_private.c

index 04392ed0d549f87e59b6ff55bcff6761199445c8,caec215c01a98c937adf53a7efda3ad01431504c..7c654741545538f2b2ec56ad50660a9f583b8abc
@@@ -2516,10 -2491,8 +2516,8 @@@ int _start_virtual_stream(virtual_sound
        pa_threaded_mainloop_unlock(virtual_stream->pa_mainloop);
  
        return ret;
 -//LCOV_EXCL_START
 +
  ERROR_WITH_UNLOCK:
-       /* UNLOCK the pa_threaded_mainloop */
        pa_threaded_mainloop_unlock(virtual_stream->pa_mainloop);
  
        for (i = 0; i < SOUND_STREAM_DIRECTION_MAX; i++) {
@@@ -2568,4 -2540,76 +2564,77 @@@ int _stop_virtual_stream(virtual_sound_
  
        return ret;
  }
 -}
+ int _set_volume_ratio(uint32_t stream_index, sound_stream_direction_e direction, double ratio)
+ {
+       int ret = MM_ERROR_NONE;
+       GDBusConnection *conn = NULL;
+       GError *err = NULL;
+       GVariant *result = NULL;
+       const gchar *dbus_ret = NULL;
+       if ((ret = __get_dbus_connection(&conn)))
+               return ret;
+       result = g_dbus_connection_call_sync(conn,
+                                               PA_BUS_NAME,
+                                               PA_STREAM_MANAGER_OBJECT_PATH,
+                                               PA_STREAM_MANAGER_INTERFACE,
+                                               PA_STREAM_MANAGER_METHOD_NAME_SET_VOLUME_RATIO,
+                                               g_variant_new("(sud)", (direction == SOUND_STREAM_DIRECTION_OUTPUT) ? "out" : "in", stream_index, ratio),
+                                               G_VARIANT_TYPE("(s)"),
+                                               G_DBUS_CALL_FLAGS_NONE,
+                                               2000,
+                                               NULL,
+                                               &err);
+       if (!result || err) {
+               LOGE("g_dbus_connection_call_sync() for SET_VOLUME_RATIO error (%s)", err ? err->message : NULL);
+               ret = _convert_dbus_error(err ? err->message : NULL);
+               g_error_free(err);
+               goto LEAVE;
+       }
+       g_variant_get(result, "(&s)", &dbus_ret);
+       LOGI("g_dbus_connection_call_sync() success, method return value is (%s)", dbus_ret);
+       if (!strncmp("STREAM_MANAGER_RETURN_ERROR_INVALID_ARGUMENT", dbus_ret, strlen(dbus_ret)))
+               ret = MM_ERROR_INVALID_ARGUMENT;
+       else if (!strncmp("STREAM_MANAGER_RETURN_ERROR_NO_STREAM", dbus_ret, strlen(dbus_ret)))
+               ret = MM_ERROR_SOUND_NO_DATA;
+       else if (strncmp("STREAM_MANAGER_RETURN_OK", dbus_ret, strlen(dbus_ret)))
+               ret = MM_ERROR_SOUND_INTERNAL;
+ LEAVE:
+       g_variant_unref(result);
+       g_object_unref(conn);
+       return ret;
+ }
+ int _set_virtual_stream_volume(virtual_sound_stream_info_s *virtual_stream, double ratio)
+ {
+       int ret = MM_ERROR_NONE;
+       int i = 0;
+       uint32_t index;
+       SM_INSTANCE_CHECK_FOR_PRIV(virtual_stream);
+       SM_STATE_CHECK_FOR_PRIV(virtual_stream, _VSTREAM_STATE_RUNNING);
+       pa_threaded_mainloop_lock(virtual_stream->pa_mainloop);
+       for (i = 0; i < SOUND_STREAM_DIRECTION_MAX; i++) {
+               if (virtual_stream->pa_stream[i]) {
+                       index = pa_stream_get_index(virtual_stream->pa_stream[i]);
+                       if ((ret = _set_volume_ratio(index, i + 1, ratio))) {
+                               if (ret == MM_ERROR_SOUND_NO_DATA) {
+                                       LOGE("something wrong, no match index of %u", index);
+                                       ret = MM_ERROR_SOUND_INTERNAL;
+                               }
+                               break;
+                       }
+               }
+       }
+       pa_threaded_mainloop_unlock(virtual_stream->pa_mainloop);
+       return ret;
++}
 +//LCOV_EXCL_STOP