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) {