From: Pawel Andruszkiewicz Date: Thu, 20 Aug 2015 14:32:25 +0000 (+0200) Subject: [Bluetooth] Fixed implementation of setPowered(). X-Git-Tag: submit/tizen/20151026.073646^2^2~180 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=39df4e60b886504dd772cdb7ae0112ce132d1f86;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Bluetooth] Fixed implementation of setPowered(). Issue: XWALK-699 [Verification] TCT pass rate did not change. Change-Id: I5d3a8a273a7962f83afd42b707335975dc483f78 Signed-off-by: Pawel Andruszkiewicz --- diff --git a/src/bluetooth/bluetooth_adapter.cc b/src/bluetooth/bluetooth_adapter.cc index c61648b4..77a96950 100755 --- a/src/bluetooth/bluetooth_adapter.cc +++ b/src/bluetooth/bluetooth_adapter.cc @@ -544,34 +544,41 @@ void BluetoothAdapter::SetPowered(const picojson::value& data, picojson::object& } if (ret.IsSuccess()) { - const void* t_param[] = { this, &ret, &new_powered, &callback_handle }; + struct UserData { + BluetoothAdapter* adapter; + double callback_handle; + }; + + UserData* user_data = new UserData{ this, callback_handle }; err = app_control_send_launch_request(service, []( app_control_h request, app_control_h reply, app_control_result_e r, void* user_data) { + LoggerD("app_control_send_launch_request() callback"); - BluetoothAdapter* self = static_cast(((void**) user_data)[0]); - PlatformResult* p_ret = static_cast(((void**) user_data)[1]); - bool* p_new_powered = static_cast(((void**) user_data)[2]); - double* p_callback_handle = static_cast(((void**) user_data)[3]); + UserData* data = static_cast(user_data); char* result = nullptr; app_control_get_extra_data(reply, "result", &result); - LoggerD("bt onoff: %s", result); - if (strcmp(result, "success") == 0) { - self->requested_powered_ = *p_new_powered; - self->user_request_list_[SET_POWERED] = true; - self->user_request_callback_[SET_POWERED] = *p_callback_handle; + if (result && strcmp(result, "success") == 0) { + LoggerD("bt onoff: %s", result); + free(result); } else { LoggerE("app control setPowered failed"); - *p_ret = PlatformResult(ErrorCode::UNKNOWN_ERR, "app control setPowered failed"); + data->adapter->instance_.AsyncResponse(data->callback_handle, PlatformResult(ErrorCode::UNKNOWN_ERR, "app control setPowered failed")); } - }, t_param); + + delete data; + }, user_data); if (err != APP_CONTROL_ERROR_NONE) { LoggerE("app control set launch request failed: %d", err); ret = PlatformResult(ErrorCode::UNKNOWN_ERR, "app control set launch request failed"); + } else { + this->requested_powered_ = new_powered; + this->user_request_list_[SET_POWERED] = true; + this->user_request_callback_[SET_POWERED] = callback_handle; } } @@ -580,6 +587,10 @@ void BluetoothAdapter::SetPowered(const picojson::value& data, picojson::object& LoggerE("app control destroy failed: %d", err); ret = PlatformResult(ErrorCode::UNKNOWN_ERR, "app control destroy failed"); } + + if (!ret) { + instance_.AsyncResponse(callback_handle, ret); + } #else this->requested_powered_ = new_powered; this->user_request_list_[SET_POWERED] = true; @@ -590,11 +601,10 @@ void BluetoothAdapter::SetPowered(const picojson::value& data, picojson::object& } else { bt_adapter_disable(); } - return; #endif + } else { + instance_.AsyncResponse(callback_handle, ret); } - - instance_.AsyncResponse(callback_handle, ret); } void BluetoothAdapter::SetVisible(const picojson::value& data, picojson::object& out) {