summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src/application_data_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/src/application_data_impl.cc')
-rw-r--r--src/components/application_manager/src/application_data_impl.cc25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/components/application_manager/src/application_data_impl.cc b/src/components/application_manager/src/application_data_impl.cc
index 9f30c00014..25fc60f3d9 100644
--- a/src/components/application_manager/src/application_data_impl.cc
+++ b/src/components/application_manager/src/application_data_impl.cc
@@ -568,28 +568,35 @@ void DynamicApplicationDataImpl::set_display_capabilities(
display_capabilities_.reset(
new smart_objects::SmartObject(display_capabilities));
- auto has_window_id = [&tmp_window_capabilities](const WindowID window_id) {
+ auto get_window_index = [&tmp_window_capabilities](const WindowID window_id) {
const auto tmp_window_capabilities_arr = tmp_window_capabilities.asArray();
if (!tmp_window_capabilities_arr) {
- return false;
+ return -1;
}
+ int index = 0;
for (auto element : *tmp_window_capabilities_arr) {
if (element.keyExists(strings::window_id)) {
if (window_id == element[strings::window_id].asInt())
- return true;
+ return index;
} else if (window_id == 0) {
- return true;
+ return index;
}
+ index++;
}
-
- return false;
+ return -1;
};
for (uint32_t i = 0; i < incoming_window_capabilities.length(); ++i) {
- const auto window_id =
- incoming_window_capabilities[i][strings::window_id].asInt();
- if (!has_window_id(window_id)) {
+ int64_t window_id = 0;
+ if (incoming_window_capabilities[i].keyExists(strings::window_id)) {
+ window_id = incoming_window_capabilities[i][strings::window_id].asInt();
+ }
+ int found_index = get_window_index(window_id);
+ if (0 <= found_index) {
+ // Update the existing window capability
+ tmp_window_capabilities[found_index] = incoming_window_capabilities[i];
+ } else {
tmp_window_capabilities[tmp_window_capabilities.length()] =
incoming_window_capabilities[i];
}