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>
{
unsigned req_num = g_app_list.currentRequestNumber();
HMI_SEQ_DEBUG(req_num, "set current visible app to invisible task");
{
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());
// 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());
int surface;
TaskVisible task_visible = TaskVisible::INVISIBLE;
bool end_draw_finished = true;
int surface;
TaskVisible task_visible = TaskVisible::INVISIBLE;
bool end_draw_finished = true;
for (auto const &l : this->layers.mapping)
{
for (auto const &l : this->layers.mapping)
{