[bluetooth-frwk] fix in listFolders and listFilterFields 50/102850/2
authorLukasz Bardeli <l.bardeli@samsung.com>
Fri, 4 Nov 2016 13:32:56 +0000 (14:32 +0100)
committerPyun DoHyun <dh79.pyun@samsung.com>
Thu, 8 Dec 2016 00:20:26 +0000 (16:20 -0800)
Change-Id: I4ef2f1416dd94dd5e390c69f15116e354c5c70cf
Signed-off-by: Lukasz Bardeli <l.bardeli@samsung.com>
bt-api/bt-event-handler.c
bt-service/bt-service-map-client.c

index 5a4d843..c6c77b4 100644 (file)
@@ -2089,13 +2089,12 @@ void __bt_map_client_event_filter(GDBusConnection *connection,
        } else if (strcasecmp(signal_name, BT_MAP_FILTER_FIELDS_COMPLETE) == 0) {
                BT_DBG("BT_MAP_LIST_FOLDERS_COMPLETE");
 
-               const char *session_id = NULL;
                GVariant *value;
                int request_id = 0;
                int i = 0;
                bt_map_list_filter_fields_info_t fields_info = {0,};
 
-               g_variant_get(parameters, "(ivsi)", &result, &value, &session_id, &request_id);
+               g_variant_get(parameters, "(ivi)", &result, &value, &request_id);
 
                if (__bt_is_request_id_exist(request_id) == FALSE) {
                        BT_ERR("Different request id!");
index 9babf6b..d554e3d 100644 (file)
@@ -366,6 +366,40 @@ int _bt_map_client_set_folder(const char* session_id, const char* name)
        return BLUETOOTH_ERROR_NONE;
 }
 
+static void __bt_list_folders_cb(GDBusProxy *proxy,
+                               GAsyncResult *res, gpointer user_data)
+{
+       BT_DBG("+");
+
+       GError *error = NULL;
+       GVariant *value, *in_param, *param;
+
+       int result = BLUETOOTH_ERROR_NONE;
+       int request_id;
+       int size = 0;
+
+       in_param = (GVariant*) user_data;
+       g_variant_get(in_param, "(i)", &request_id);
+
+       value = g_dbus_proxy_call_finish(proxy, res, &error);
+
+       if (error) {
+               BT_ERR("%s", error->message);
+               g_clear_error(&error);
+               result = BLUETOOTH_ERROR_INTERNAL;
+       }
+
+       param = g_variant_new("(iiv)", result, request_id, value);
+       BT_DBG("RequestID[%d]", request_id);
+       result = _bt_send_event(BT_MAP_CLIENT_EVENT,
+                       BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE, param);
+
+       g_variant_unref(value);
+       g_variant_unref(in_param);
+
+       BT_DBG("-");
+}
+
 int _bt_map_client_list_folders(int request_id, GDBusMethodInvocation *context,
                const char* session_id, int offset, int maxcount)
 {
@@ -401,9 +435,7 @@ int _bt_map_client_list_folders(int request_id, GDBusMethodInvocation *context,
                        result = BLUETOOTH_ERROR_INTERNAL;
                } else {
                        BT_DBG("message proxy set");
-
                        GVariantBuilder* b = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
-
                        if (offset >= 0) {
                                g_variant_builder_add(b, "{sv}", "Offset", g_variant_new_uint16(offset));
                        }
@@ -414,29 +446,15 @@ int _bt_map_client_list_folders(int request_id, GDBusMethodInvocation *context,
                        GVariant *params = g_variant_new("(@a{sv})", args);
                        g_variant_builder_unref (b);
 
-                       int* request_id_p = malloc(sizeof(*request_id_p));
-                       *request_id_p = request_id;
-
-                       GVariant *folder_list_var = g_dbus_proxy_call_sync(message_access_proxy,
-                                       "ListFolders", params, G_DBUS_CALL_FLAGS_NONE, -1,
-                                       NULL, &error);
-                       if (error != NULL) {
-                               BT_ERR("Could not ListFolders: %s\n", error->message);
-                               // TODO return correct error
-                               result = BLUETOOTH_ERROR_INTERNAL;
-                       } else {
-                               if (!folder_list_var) {
-                                       BT_ERR("returned ListFolders is null\n");
-                                       result = BLUETOOTH_ERROR_INTERNAL;
-                               } else {
-                                       BT_DBG("ListFolders succeed\n");
-
-                                       GVariant *param = g_variant_new("(iiv)", result, request_id, folder_list_var);
-                                       BT_DBG("RequestID[%d]", request_id);
-                                       result = _bt_send_event(BT_MAP_CLIENT_EVENT,
-                                                                       BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE, param);
-                               }
-                       }
+                       GVariant *param = g_variant_new("(i)", request_id);
+
+                       g_dbus_proxy_call(message_access_proxy,
+                               "ListFolders", params,
+                               G_DBUS_CALL_FLAGS_NONE, -1,
+                               NULL,
+                               (GAsyncReadyCallback)__bt_list_folders_cb,
+                               (void*)param);
+
                }
        }
 
@@ -456,12 +474,11 @@ static void __bt_list_filter_fields_cb(GDBusProxy *proxy,
 
        int result = BLUETOOTH_ERROR_NONE;
        int request_id;
-       char* session_id = NULL;
        char** fields = NULL;
        int size = 0;
 
        in_param = (GVariant*) user_data;
-       g_variant_get(in_param, "(is)", &request_id, &session_id);
+       g_variant_get(in_param, "(i)", &request_id);
 
        value = g_dbus_proxy_call_finish(proxy, res, &error);
 
@@ -471,7 +488,7 @@ static void __bt_list_filter_fields_cb(GDBusProxy *proxy,
                result = BLUETOOTH_ERROR_INTERNAL;
        }
 
-       param = g_variant_new("(ivsi)", result, value, session_id, request_id);
+       param = g_variant_new("(ivi)", result, value, request_id);
 
        _bt_send_event(BT_MAP_CLIENT_EVENT, BLUETOOTH_EVENT_MAP_LIST_FILTER_FIELD_COMPLETE,
                        param);
@@ -513,8 +530,7 @@ int _bt_map_client_list_filter_fields(int request_id, GDBusMethodInvocation *con
 
        retv_if(message_proxy == NULL, BLUETOOTH_ERROR_INTERNAL);
 
-       GVariant *param = g_variant_new("(is)",
-                       request_id, session_id);
+       GVariant *param = g_variant_new("(i)", request_id);
 
        g_dbus_proxy_call(message_proxy,
                        "ListFilterFields", g_variant_new("()"),
@@ -523,6 +539,8 @@ int _bt_map_client_list_filter_fields(int request_id, GDBusMethodInvocation *con
                        (GAsyncReadyCallback)__bt_list_filter_fields_cb,
                        (void*)param);
 
+       g_object_unref(message_proxy);
+
        BT_DBG("-");
 
        return BLUETOOTH_ERROR_NONE;