diff options
author | JackLivio <jack@livio.io> | 2020-04-22 08:30:11 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-22 11:30:11 -0400 |
commit | a85ef58358c456f69fee93addb7066dc02ecae48 (patch) | |
tree | 918dc11122ba7314c1d1e6e7d88a906fdfc0020f | |
parent | 6ce1872b62ab097b4b249f569dc2742cf270a5fd (diff) | |
download | sdl_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.cc | 25 |
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]; } |