e_policy_visibility: add a E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY_RENDER_DONE state 67/191767/6 submit/tizen/20181030.101450
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 23 Oct 2018 08:49:25 +0000 (17:49 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Tue, 30 Oct 2018 08:41:22 +0000 (08:41 +0000)
commit965a517b07dd62fcc2d5ec5f1989f6f7d211d682
tree35f0c8bf7cfafad380d410bc137b886607a7bb4e
parent0410551fa5b9d73ddd5c0ed6af881071e2023b37
e_policy_visibility: add a E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY_RENDER_DONE state

There was a bug that the window which was pending uniconify by visibility didn't raise
even if it requested to activate.

[TOP] A win -> B win(32bit) -> C win [BOTTOM]

Above window stack,
when "A win" request to lower, then "B win" and "C win" are running uniconify_pending with
not_raise flag.
After "C win" is rendered, its internal state changed to E_VIS_ICONIFY_STATE_UNICONIC.
But e_client_uniconify() is not called because e is waiting for rendering of "B win".

In this time, if "C win" requests to activate, then this request is not added to pending list
because the state of "C win" is E_VIS_ICONIFY_STATE_UNICONIC.

As a result of this, the window stack is changed as below.
[TOP] B win(32bit) -> C win -> A win [BOTTOM]

But, the expected stack is as below.
[TOP] C win -> B win(32bit) -> A win [BOTTOM]

To fix this problem, we add a additional state - E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY_RENDER_DONE.
It means that the window is rendered, but it remains iconic state.
So, the activate request of "C win" is added to the pending list in above case.

The E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY_RENDER_DONE state
is changed to E_VIS_ICONIFY_STATE_UNICONIC after all pending windows are rendered.

Change-Id: I3fff995dbbad7f438e952616bc6840e7a92e2424
src/bin/e_policy_visibility.c
src/bin/e_policy_visibility_internal.h