summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2020-04-22 08:30:11 -0700
committerGitHub <noreply@github.com>2020-04-22 11:30:11 -0400
commita85ef58358c456f69fee93addb7066dc02ecae48 (patch)
tree918dc11122ba7314c1d1e6e7d88a906fdfc0020f
parent6ce1872b62ab097b4b249f569dc2742cf270a5fd (diff)
downloadsdl_core-a85ef58358c456f69fee93addb7066dc02ecae48.tar.gz
Fix capability window update when window_id is missing (#3342)
* Fix capability window update when window_id is missing * Refactor comments * Update src/components/application_manager/src/application_data_impl.cc Co-Authored-By: Collin <iCollin@users.noreply.github.com> Co-authored-by: Collin <iCollin@users.noreply.github.com>
-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];
}