focus-server: Apply umask(0) to change access permissions of its files
[platform/core/multimedia/libmm-sound.git] / mm_sound_proxy.c
index 9eb678b..603434c 100644 (file)
@@ -1191,23 +1191,49 @@ int mm_sound_proxy_update_stream_focus_status(int focus_id, unsigned int status)
        if (params) {
                if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_UPDATE_STREAM_FOCUS_STATUS, params, &result)) != MM_ERROR_NONE) {
                        debug_error("dbus set volume by type failed");
-                       goto cleanup;
+                       if (result) {
+                               g_variant_get(result, "(&s)",  &reply);
+                               debug_log("reply : %s", reply);
+                               if (!strcmp(reply, "STREAM_MANAGER_RETURN_ERROR"))
+                                       ret = MM_ERROR_SOUND_INTERNAL;
+                       }
                }
        } else {
                debug_error("Construct Param for method call failed");
                return MM_ERROR_SOUND_INTERNAL;
        }
 
-       if (result) {
-               g_variant_get(result, "(&s)",  &reply);
-               debug_log("reply : %s", reply);
-               if (!strcmp(reply, "STREAM_MANAGER_RETURN_ERROR"))
-                       ret = MM_ERROR_SOUND_INTERNAL;
+       if (result)
+               g_variant_unref(result);
+
+       debug_fleave();
+       return ret;
+}
+
+int mm_sound_proxy_deliver_focus(int pid, int src_id, int dst_id, mm_sound_focus_type_e focus_type)
+{
+       int ret = MM_ERROR_NONE;
+       char *reply = NULL;
+       GVariant *params = NULL, *result = NULL;
+
+       debug_fenter();
+
+       params = g_variant_new("(iiii)", pid, src_id, dst_id, focus_type);
+       if (params) {
+               if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_FOCUS_SERVER, AUDIO_METHOD_DELIVER_FOCUS, params, &result)) != MM_ERROR_NONE) {
+                       debug_error("dbus deliver focus failed");
+                       if (result) {
+                               g_variant_get(result, "(&s)", &reply);
+                               debug_log("reply : %s", reply);
+                               if (!strcmp(reply, "STREAM_MANAGER_RETURN_ERROR"))
+                                       ret = MM_ERROR_SOUND_INTERNAL;
+                       }
+               }
        } else {
-               debug_error("reply null");
+               debug_error("Construct Param for method call failed");
+               return MM_ERROR_SOUND_INTERNAL;
        }
 
-cleanup:
        if (result)
                g_variant_unref(result);