diff options
author | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2018-07-24 19:38:30 +0900 |
---|---|---|
committer | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2018-07-24 23:17:33 +0900 |
commit | e4fcbf1b100ec2d926f7fbba5b1246336d05d436 (patch) | |
tree | 10056375e2b28989f5b4c02802aa588d1e697dc4 | |
parent | 2796f54cf0b80ce180542198de2b2465f9d98d95 (diff) |
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 <knimitz@witz-inc.co.jp>
-rw-r--r-- | src/window_manager.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
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) { |