From e4fcbf1b100ec2d926f7fbba5b1246336d05d436 Mon Sep 17 00:00:00 2001 From: Kazumasa Mitsunari Date: Tue, 24 Jul 2018 19:38:30 +0900 Subject: Fix the race condition of HomeScreen HomeScreen and launcher have race condition. This patch fixes if the homescreen requests to be shown, WM doesn't change launcher(and others) invisible. This is quick hack. System UI's role is homescreen now. We can't change system UI from setting and so on currently. Bug-AGL: SPEC-1407 Change-Id: Ie70e0fd635fae03de7b731f3d73fb1863e3c6ad4 Signed-off-by: Kazumasa Mitsunari --- src/window_manager.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/window_manager.cpp b/src/window_manager.cpp index 15f55f0..fb35ab0 100644 --- a/src/window_manager.cpp +++ b/src/window_manager.cpp @@ -1102,6 +1102,15 @@ WMError WindowManager::setInvisibleTask(const std::string &role, bool split) { unsigned req_num = g_app_list.currentRequestNumber(); HMI_SEQ_DEBUG(req_num, "set current visible app to invisible task"); + bool found = false; + auto trigger = g_app_list.getRequest(req_num, &found); + // I don't check found == true here because this is checked in caller. + if(trigger.role == "homescreen") + { + HMI_SEQ_INFO(req_num, "In case of 'homescreen' visible, don't change app to invisible"); + return WMError::SUCCESS; + } + // This task is copied from original actiavete surface const char *drawing_name = this->rolenew2old[role].c_str(); auto const &surface_id = this->lookup_id(role.c_str()); @@ -1113,7 +1122,6 @@ WMError WindowManager::setInvisibleTask(const std::string &role, bool split) int surface; TaskVisible task_visible = TaskVisible::INVISIBLE; bool end_draw_finished = true; - bool found = false; for (auto const &l : this->layers.mapping) { -- cgit 1.2.3-korg