From: Lukasz Bardeli Date: Tue, 10 Jan 2017 08:22:57 +0000 (+0100) Subject: [Convergance] Fix for swapDevice X-Git-Tag: submit/tizen_3.0/20170111.021729~2^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b25f64b7fda7d4261e68ced971ffc87cf7684864;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Convergance] Fix for swapDevice Change-Id: I42ddf08ec4d8343124db8c1d994b6ede499f6a8b Signed-off-by: Lukasz Bardeli --- diff --git a/src/convergence/convergence_device.cc b/src/convergence/convergence_device.cc index 34d36637..f617db7d 100644 --- a/src/convergence/convergence_device.cc +++ b/src/convergence/convergence_device.cc @@ -154,7 +154,7 @@ void ConvergenceDevice::ForEachServiceCb(conv_service_h service_handle, s->Refresh(); } -void ConvergenceDevice::Refresh() { +void ConvergenceDevice::Refresh(conv_device_h device_handle) { ScopeLogger(); // Getting device properties from handle id_ = ExtractDevicePropery(CONV_DEVICE_ID); @@ -165,7 +165,14 @@ void ConvergenceDevice::Refresh() { id_.c_str(), name_.c_str(), type_.c_str()); // Extracting services - const int error = conv_device_foreach_service(device_handle_, ForEachServiceCb, this); + conv_device_h handle = nullptr; + if (device_handle) { + handle = device_handle; + } else { + handle = device_handle_; + } + + const int error = conv_device_foreach_service(handle, ForEachServiceCb, this); if (CONV_ERROR_NONE != error) { trace_conv_error(error, __LINE__, "conv_device_foreach_service"); } diff --git a/src/convergence/convergence_device.h b/src/convergence/convergence_device.h index e16e4105..64962440 100644 --- a/src/convergence/convergence_device.h +++ b/src/convergence/convergence_device.h @@ -44,11 +44,12 @@ class ConvergenceDevice { public: - void Refresh(); + void Refresh(conv_device_h device_handle = nullptr); ConvergenceService *GetService(const int service_type) const; //picojson::object ToJson() const; picojson::value ToJson() const; //std::string get_device() const {return device_handle_; } + int ServiceCount() {return services_.size();}; public: ConvergenceService *RegisterLocalService(const int service_type); diff --git a/src/convergence/convergence_manager.cc b/src/convergence/convergence_manager.cc index c7f67840..11482af6 100644 --- a/src/convergence/convergence_manager.cc +++ b/src/convergence/convergence_manager.cc @@ -115,6 +115,9 @@ ConvergenceDevice *ConvergenceManager::SwapDevice(const char *device_id, d->SetId(device_id); registered_devices_[device_id] = d; LoggerI("...registering the device [%s, %x]", device_id, device_handle); + // Assume that there are only two services + } else if(registered_devices_[device_id]->ServiceCount() < 2) { + registered_devices_[device_id]->Refresh(device_handle); } return registered_devices_[device_id]; } diff --git a/src/convergence/convergence_service.cc b/src/convergence/convergence_service.cc index 61d9d3ba..4f9167e0 100644 --- a/src/convergence/convergence_service.cc +++ b/src/convergence/convergence_service.cc @@ -150,7 +150,7 @@ void ConvergenceService::Refresh() { ScopeLogger(); conv_service_h service_handle = FindServiceHandle(); if (!service_handle) { - LoggerE("AAAAAA!!! Service not found"); + LoggerE("Service not found"); return; }