aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-07-24 19:38:30 +0900
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-07-24 23:17:33 +0900
commite4fcbf1b100ec2d926f7fbba5b1246336d05d436 (patch)
tree10056375e2b28989f5b4c02802aa588d1e697dc4
parent2796f54cf0b80ce180542198de2b2465f9d98d95 (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.cpp10
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)
{