Changyeon Lee [Wed, 16 Jun 2021 06:03:23 +0000 (15:03 +0900)]
e_hwc_windows: Fix deadlock when e_hwc_window is freed
after tbm_surface of E_Hwc_Window_Update is referenced,
it is possible that unreferenced api of tbm_surface
(tbm_surface_internal_unref) is called when e_hwc_window
is freed.
e_hwc_windows add rendererd_windows list to user_data of
tbm_surface of target_window
rendered_windows list has reference of e_hwc_window and
unreference of e_hwc_window can be called when rendered_windows
list is freed in user_data delete callback of tbm_surface.
but it cause deadlock problem when tbm_surface_internal_unref
is called in callback of tbm_surface
because libtbm doesn't allow that tbm_surface api is called
in callback of tbm_surface.
so e_hwc_windows doesn't use user_data of tbm_surface for
rendered_buffer and rendered_windows list.
they are added to member of E_Hwc_Window_Comp_Info.
E_Hwc_Window_Comp_Info isn't freed in user_data deleted
callback.
Change-Id: I40deba667bbfb7bbfba2807830e823faa90c07b4
Changyeon Lee [Wed, 16 Jun 2021 04:30:04 +0000 (13:30 +0900)]
e_hwc_windows: Rename Buffer_Comp_Info to Comp_Info
Change-Id: Iaf4f2ec2e00e8a8450e4368db017ffbba2b3e012
Junseok, Kim [Tue, 8 Jun 2021 07:47:38 +0000 (16:47 +0900)]
e_test_helper: Added iconify by client info for testcase
Added iconify by client information to wininfo and iconic state changed
signal.
Change-Id: I2afb8f5f83d53aec12a73c5728710e9ca186398b
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Changyeon Lee [Wed, 9 Jun 2021 10:04:11 +0000 (19:04 +0900)]
e_hwc_window: add Trace log in e_hwc_window_present_sync
Change-Id: I9ed612c04e07ba8a56ab6963965ede88c46098b2
Changyeon Lee [Wed, 26 May 2021 07:16:53 +0000 (16:16 +0900)]
e_video_hwc: Stop queuing video updates on hwc windows policy
An update for a video surface(the surface associated with
tizen_video_object protocol) has been queued to apply later if it's
created early before previous update is not yet applied to a screen.
It's to ensure applying all video updates to a screen without any frame
drop.
But this operation makes synchronizing updates between video frame and
graphics frame so difficult.
Additionally, the wayland client is able to throttle frames on its own
by using frame callback.
So, this patch is to attempt to disable the queuing video updates
experimentally only on hwc windows policy.
Change-Id: I02bbda8bb51688a227f15bfa93a9991183cba064
Changyeon Lee [Thu, 6 May 2021 11:29:12 +0000 (20:29 +0900)]
e_hwc_window: Synchronize frame in case of surface and subsurface are transformed
e_hwc_window_present_sync api for synchronizing hwc with gl compositing
if e_hwc_client_present_sync api is called,
tbm_surface and tdm_hwc_window_info of hwc_window will be updated
after gl compositing is done.
update data is dequeued when buffer for gl compositing is dequeued
andthen it is enqueued when buffer for gl compositing is acquired.
Change-Id: I076a92d63379b084eeeceffd6666a4f7bfa44157
Changyeon Lee [Thu, 29 Apr 2021 10:54:16 +0000 (19:54 +0900)]
e_hwc_windows: Add pending update data to debug info
Change-Id: Id540eef6786a29867472d56c3bd4c3c72d547331
Changyeon Lee [Thu, 29 Apr 2021 05:43:27 +0000 (14:43 +0900)]
e_hwc_window: Add e_hwc_window_pending_update_data_de/enqueue
this api for sync with gl compositing and hwc
Change-Id: I2625e3553d50299d52a9576d43437739658a4c8c
Changyeon Lee [Thu, 29 Apr 2021 03:11:33 +0000 (12:11 +0900)]
e_hwc_window: Reference tbm_surface when it set to e_hwc_window_buffer
Change-Id: Ie0fa60e0c85d8bc05793a09662d9c53d5b949039
Changyeon Lee [Wed, 28 Apr 2021 12:51:41 +0000 (21:51 +0900)]
e_hwc_window: Add E_Hwc_Window_Update_Data for managing update infomation
current : tdm_hwc_window
commit : latest tdm_hwc_commit
display : display done
Change-Id: Iac86c8fe5cc84bc45fa98bb66c2057127e8eaa01
Junseok, Kim [Fri, 11 Jun 2021 01:55:57 +0000 (10:55 +0900)]
e_info_client: remove duplicated range check while read uint from string.
Because of above line already checked out of bound of the ulong from string,
The check that greater than max of uint has no affect to result.
So, remove that check code.
Change-Id: I0ef61639664c592f02dbf6d4dd095bea46c4b596
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Doyoun Kang [Thu, 10 Jun 2021 02:47:29 +0000 (11:47 +0900)]
policy: apply stack policy for transient below
When a child window which sets E_TRANSIENT_BELOW policy is created,
then e places it to BOTTOM of children.
(example)
1. create transient_below child1
=> [Top] parent -> child1 [Bottom]
2. create transient_below child2
=> [Top] parent -> child1 -> child2 [Bottom]
Change-Id: I08044023e6be748bccaa58a2dc4941404ebe08aa
Seunghun Lee [Mon, 31 May 2021 06:50:35 +0000 (15:50 +0900)]
e_client_video: Use E_Client_Video instance for a parameter of function
Passes E_Client_Video instance instead of E_Client for internal
functions. In this way, the name and argument of functions in the module
would make more sense.
Change-Id: If0793486c47e97351ddefe764e0df91de392d6df
Seunghun Lee [Mon, 31 May 2021 04:40:36 +0000 (13:40 +0900)]
video: Destruct the E_Client_Video instance in E_CLIENT_HOOK_DEL
It listens to E_CLIENT_HOOK_DEL instead of E_EVENT_CLIENT_REMOVE to
ensure that ec is not deleted object during the instance lifecycle.
Now that inside e_client_video implementation it can be sure that ec
is not deleted object, no need to check if ec is deleted object.
Change-Id: I6060dd6e6accee5175dffa661c3b67372c9695f0
Junseok, Kim [Tue, 8 Jun 2021 04:28:04 +0000 (13:28 +0900)]
e_map: free used e_map pointers for fix memory leak
before evas_object_map_get didn't need to free their returned evas_map object.
but from previous patch that e_map added, e_comp_object/client_map_get functions are allocate memory.
so, all of e_map must be freed after use them.
Change-Id: I0d680de8026cec062871933b967ae78e1795c637
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Junseok, Kim [Wed, 26 May 2021 03:42:05 +0000 (12:42 +0900)]
e_map: use E_Map APIs instead of Evas_Map
E_Map is wrapper API of Evas_Map.
this patch replaces all of Evas_Map function and variable to E_Map.
Change-Id: Ic0cb89fdbc24ef83d46bd2a7ea21eef6c5657dbf
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Junseok, Kim [Mon, 17 May 2021 09:05:31 +0000 (18:05 +0900)]
e_map: Added wrapper APIs for evas_map
Evas_Map used in many functions for effect, zoom and etc.
But, we couldn't manage all of Evas_Map used by modules.
and there're so many duplicated codes to doing same operation.
For easy maintenance and increase reusability of Evas_Map, added E_Map wrapper APIs for it's first step.
Change-Id: I6c0dc2a88a43a545bc0f62dba591e4c9129730d3
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
SooChan Lim [Mon, 7 Jun 2021 03:08:38 +0000 (12:08 +0900)]
e_comp_wl_tizen_hwc: implement the create_commit_feedback request.
This request has the same implementation as commit_feedback request.
The implementationfor commit_feedback request will be removed later
because the commit_feedback request will be deprecated.
Change-Id: I8abc3c6b2001bc0b91955db2d8d1634eb1a8383c
Junkyeong, Kim [Fri, 4 Jun 2021 11:23:31 +0000 (20:23 +0900)]
e_hwc_windows: Erase unnecessary condition
Change-Id: Ie6df3ceaf697dd73163ce5a333fde1716fd03f68
Signed-off-by: Junkyeong, Kim <jk0430.kim@samsung.com>
Junkyeong, Kim [Fri, 4 Jun 2021 11:21:43 +0000 (20:21 +0900)]
e_hwc_windows: Set and unset external window
The external window will not be evaluated in _e_hwc_windows_changes_update.
Change-Id: I0a84c51be2a065712c60a50c630422830496326f
Signed-off-by: Junkyeong, Kim <jk0430.kim@samsung.com>
Junkyeong, Kim [Fri, 4 Jun 2021 11:18:51 +0000 (20:18 +0900)]
e_hwc_window: Add is_external flag and APIs
To check external window, use is_external flag.
Change-Id: I94f85c275fab29823ff16bdf268c474b51a0aa88
Signed-off-by: Junkyeong, Kim <jk0430.kim@samsung.com>
Junseok, Kim [Fri, 28 May 2021 01:20:57 +0000 (10:20 +0900)]
e_client: remove focus_defer_unset call when revert focus in focus calculate
When the focused window is freed, if there're focusable window below the focused window,
there is a bug that focus calculation may occur two times due to defer focus unset after revert focus.
For fix this bug, remove focus_defer_unset when focus be decided by revert_focus of focus_calculate.
Change-Id: I41064c4c36254eb7b0dc144523934f9b27dfe970
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Seunghun Lee [Mon, 24 May 2021 09:26:59 +0000 (18:26 +0900)]
e_foreign_shell: No longer send destination/transform_changed events
These events are no longer supported by the wtz-foreign protocol.
Because there is no use case.
Change-Id: I7ba2792cb7097a014893048fb3e07c08ea0b05e5
Doyoun Kang [Wed, 26 May 2021 02:37:50 +0000 (11:37 +0900)]
winfo: support basic_op_gen option
We've added basic_op_gen option to winfo (enlightenment_info).
This option generates some operations (such as lower, activate).
usage:
winfo -basic_op_gen {window_id} {operation}
example:
winfo -basic_op_gen 0xb84b3aa0 lower
winfo -basic_op_gen 0xb84b3aa0 activate
Change-Id: Iaf3848a7a7f1d920a09295ef2ce7caa00900b963
Seunghun Lee [Tue, 25 May 2021 04:13:56 +0000 (13:13 +0900)]
e_foreign_shell: Update destination and transform of foreign shell
If foreign shell is newly created client and surface is committed,
then the state of foreign shell for not only visibility but also
destination size and transform has to be updated to the same of
exported shell's one.
Otherwise, the state of foreign shell can't be updated in forever until
the state of exported shell gets updated.
Change-Id: I953bafaf114bf86354fbfac25268e9364d8bd5c2
Seunghun Lee [Mon, 24 May 2021 09:08:09 +0000 (18:08 +0900)]
e_foreign_shell: Add functions for handler of destruction of exported_shell
Just to improve readability. No functional changes.
Change-Id: I415d3e07eedbfdc739c0a59bece0fdae103c8ca5
Seunghun Lee [Mon, 24 May 2021 02:36:15 +0000 (11:36 +0900)]
e_foreign_shell: Remove repeated assignment
This assignment will be made by _e_foreign_shell_exported_link().
Change-Id: I29e49f50636f4de7d91f962ee41c5af0c42f7158
Seunghun Lee [Thu, 20 May 2021 04:00:53 +0000 (13:00 +0900)]
e_foreign_shell: No longer use embedded client concept
There were some tricky side effects because of the concept of embedded
client which used smart object mechanism for re-stack operation. So,
this patch removes using the concept, instead it gives the
e_foreign_shell responsibility for re-stacking on its own.
This also reverts following patchs which are no longer used:
commit
8b545ca9e79ef2c06fc383cf9cbc788d4561e1e7.
Revert "e_comp_object: Set an embedded E_Client as comp_object ..."
commit
fd9f1eb3cc89980295d923894ea5e016a1a360c1.
Revert "e_client: Introduce a way of embdding a client to ..."
Change-Id: I912e038da129665b5ba6a62fe7c94aa8dce89176
Doyoun Kang [Tue, 18 May 2021 03:14:13 +0000 (12:14 +0900)]
e_process: change process' state when visibility is changed
When the visibility of window is changed to fully-obscured, e works as below.
If ec->visible flag is false, e calls _e_process_windows_act_no_visible_update.
And if not, e just calls _e_process_freeze.
There was a bug that the window which was under pending-uniconify canceled
uniconify (in other word, its state remained to iconic), e didn't send the
BACKGROUND event to the application process.
Change-Id: Iba70cb70beedfc625bce21162da19bdbe8cbaca2
Seunghun Lee [Wed, 12 May 2021 07:16:02 +0000 (16:16 +0900)]
e_comp_wl: Check return value of e_comp_wl_video_init()
It checks return value and leave an error log when it failed.
Change-Id: I0ee2b063862c1a96d84a3e828bc7b5ff27b88785
Seunghun Lee [Wed, 12 May 2021 07:13:03 +0000 (16:13 +0900)]
e_comp_wl_video: Make boolean for return value of init()
This patch is to improve consistency and readability.
And there is no functional changes.
Change-Id: I55bd4bf3d34f0285bdf8fbdbee6638f0bec29cf3
Seunghun Lee [Wed, 12 May 2021 04:56:13 +0000 (13:56 +0900)]
e_comp_wl_video: Remove superfluous assignment
No need to assign initial value because it checks return value as an
error indicator before using outcome arguments.
Change-Id: I456143346cbc1e1cd7840b5619376635b5168830
Seunghun Lee [Wed, 12 May 2021 04:52:40 +0000 (13:52 +0900)]
e_comp_wl_video: Extract methods to improve readability
No functional changes.
Change-Id: I96092bed1bc90beb52279cfd3c8111586677437a
Seunghun Lee [Wed, 12 May 2021 04:34:56 +0000 (13:34 +0900)]
e_comp_wl_video: Remove superfluous check code
The user data of wl_resources must be valid. Otherwise, it should be
failed loudly.
Change-Id: Ie8547e3616d1106ec6c38333a047f953f66ca4a8
Seunghun Lee [Tue, 11 May 2021 07:46:57 +0000 (16:46 +0900)]
e_comp_wl_video: Separate declarations from code
Change-Id: I5a79f13a5222c98b07d6e1bc1b6b38f802839bd9
Seunghun Lee [Mon, 10 May 2021 05:59:44 +0000 (14:59 +0900)]
e_comp_wl_video: Initialize fields when init function is success
The fields that should be initialized during initlizing e_comp_wl_video
should be stayed as it is if any required tasks are failed.
Change-Id: I71ba204d914db3dbcb8a6fad85ea91363952dc01
Junkyeong, Kim [Fri, 14 May 2021 10:01:55 +0000 (19:01 +0900)]
e_info_server: Erase res_rotation_set value in screen_rotation_pre option
If the previous rotation value is 0, 90 and 270 value cannot be adapted.
Only 180 can be adapted if width and height is different.
So do not have to check the return value to save config.
Change-Id: Ia22590ccb01f74e7a8004128edaf7ec18e1b56d5
Signed-off-by: Junkyeong, Kim <jk0430.kim@samsung.com>
Changyeon Lee [Wed, 12 May 2021 11:30:06 +0000 (20:30 +0900)]
e_explicit_sync: Fix dangling pointer problem of E_Explicit_Sync_Buffer_Release
if wl_resouce of E_Explicit_Sync_Buffer_Release is destroyed by client,
E_Comp_Wl_Buffer_Ref access dangling pointer of E_Explicit_Sync_Buffer_Release.
for this problem, resource is set by null when it is destroyed and
E_Explicit_Sync_Buffer_Release is freed when
e_explicit_sync_buffer_release_destroy is called.
Change-Id: Ia2959ae3c1389e3122216aca3e1d2c75df8dcf77
Junseok, Kim [Wed, 12 May 2021 08:44:57 +0000 (17:44 +0900)]
e_test_helper: Added iconic state changed signal
send iconic state changed signal when iconic state changed of test client.
it contains native window(uint) id and iconic state(Eina_Bool).
Change-Id: I33c687f32b8a7bab1e4d5e4031bc3c2447a1117d
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Doyoun Kang [Tue, 11 May 2021 00:36:07 +0000 (09:36 +0900)]
e_policy: restore ec's layer when floating is unset
When a floating mode was unset, e restored ec's layer to NORMAL only.
However, the layer of ec can be another layer (such as NORMAL, NOTIFICATION, etc.).
So, we changed code to restore its layer to original layer.
Change-Id: Ie528e6ede7d12d9fd795b0266d04f473d301fb63
Seunghun Lee [Mon, 10 May 2021 05:22:45 +0000 (14:22 +0900)]
e_presentation: Remove dead code
The presentation->global is NULL in any case of failure.
Change-Id: I586e30613f96c3ff2314dbf67246233f8d0f9b70
Doyoun Kang [Fri, 7 May 2021 02:16:55 +0000 (11:16 +0900)]
e_client/e_policy: support always_on_parent feature
If child window set the always_on_parent aux_hint, then it always has to be placed
on the parent window even if it request to lower window.
Currently, this feature can be set by below aux hint key.
- wm.policy.win.transient_for.always_on_parent
Change-Id: Icd26fabf437a976df52018f4ad9587ac9f0f3390
Seunghun Lee [Fri, 7 May 2021 06:54:36 +0000 (15:54 +0900)]
subsurface: Remove unused API, e_comp_wl_subsurface_stack_update()
It's deprecated, and no longer used anywhere.
Change-Id: I839f53d899bffcd15955f7a1f516e53041d92152
Seunghun Lee [Fri, 7 May 2021 06:44:50 +0000 (15:44 +0900)]
e_poilcy_stack: Remove unnecessary updating stack order of sub-surfaces
Updating stack order of sub-surfaces in this implementation can be
removed since the follwing patch was introduced.
d1e43082e subsurface: Fix messed up stack order of sub-surface
The stack order of sub-surfaces have been being handled by subsurface
implementation since then.
Change-Id: Id05018c3baa7516c3bad81441786c8697aabb044
Seungjin Park [Thu, 6 May 2021 05:55:36 +0000 (14:55 +0900)]
e_policy: Add E_POLICY_HOOK_CLIENT_STACK_MODE_SET hook
Add a new hook in policy_wl to let modules know stack mode change of clients
Change-Id: I8bd2e30ae7481acbe6ca313d6fea55b8e98db0d6
Signed-off-by: Seungjin Park <sj8808.park@samsung.com>
Doyoun Kang [Wed, 28 Apr 2021 09:54:07 +0000 (18:54 +0900)]
e_policy_stack: fix build break on 64bit env
Change-Id: I96518c6d7e71c793c4cf302e6729cb0a4ca2bdb2
Seunghun Lee [Wed, 28 Apr 2021 09:38:10 +0000 (18:38 +0900)]
e_comp_object: Revert patchs related to transp object causing issue
The problem that the transform bg object hided video displaying underlay.
It turned out because tranp object has been added to smart member and it
didn't work render copy operation because its parent wasn't in render copy
operation.
Revert all related patchs. And this issue will be handled in the future.
Revert "e_comp_object: Remove obsolete stacking transform transp object"
This reverts commit
f40c1f181df2b6f76f70c597bbef8daf11726c0d.
Revert "e_comp_object: Fix wrong punch of window due to transp object stack order"
This reverts commit
abb8da9ff51788322cfa0542d70f089e1d53d095.
Revert "e_comp_object: Add transp object as a member object of smart object"
This reverts commit
421731114b1c832cddc2b5eb8232d1e96cfc0751.
Change-Id: I115fd4bb95960c907a5d09b9917e16a766a1fd4d
Doyoun Kang [Wed, 28 Apr 2021 08:19:22 +0000 (17:19 +0900)]
policy/shell: refactoring parent_set/transient_for code
we changed code to use e_policy_stack_parent_set and e_policy_stack_transient_for_set
while handling requests for parent_set and transient_for_set
Change-Id: I7f010cf9e025f51e81b0e76b48199c876a2f2a0b
Doyoun Kang [Tue, 27 Apr 2021 08:15:33 +0000 (17:15 +0900)]
e_policy_stack: refactoring transient window code
- remove E_Policy_Stack structure
- merge handling transient window code to e_policy_stack_transient_for_apply
from e_policy_stack_hook_pre_post_fetch and e_policy_stack_hook_pre_fetch
Change-Id: I1f465d67c4c20e5302da5c6dc032fccbcc6e74bd
Junseok, Kim [Wed, 28 Apr 2021 04:49:20 +0000 (13:49 +0900)]
e_test_helper: fix build warning
Change-Id: I1672775b4e332806482c4d2d36699c769d3d5ff3
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Junseok, Kim [Wed, 21 Apr 2021 05:25:36 +0000 (14:25 +0900)]
e_test_helper: Added Focused variable to FocusChanged signal
Change-Id: If9ea7823bbe1489ea0b23a6096256b4c7aaa469b
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Junseok, Kim [Tue, 27 Apr 2021 03:49:53 +0000 (12:49 +0900)]
e_test_helper: Added get_aux_hint method
Added method to get current aux hint data.
It requires aux hint name, and returns current applied aux hint data(ID, hint, value) matched with name.
Change-Id: I5af6f20c4ca3952422be55881b48d2036c145033
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Seunghun Lee [Tue, 27 Apr 2021 08:26:28 +0000 (17:26 +0900)]
e_foreign_shell: Fix typo
Change-Id: I2533b1ad0e38e760b2ed7582c17afee0a2c957a6
Seunghun Lee [Tue, 27 Apr 2021 04:18:43 +0000 (13:18 +0900)]
video: Change to idle_enterer from ecore_job
This patch changes video to use idle_enterer from ecore_job.
If geometry of a video changes by animating run by ecore_animator or so,
then the video cannot have chance to work before the hwc output.
Consequently, all changes with the video missing gets applied to the
output.
The occurrence order of each handler was as follow:
job(video) -> animator(animating) -> idle_enterer(hwc output)
The changed order is as follow:
animator(animating) -> idle_enterer(video) -> idle_enterer(hwc_output)
Change-Id: I558178883efcb68d6b2fb6ef8c138aea99b6eaae
Doyoun Kang [Mon, 26 Apr 2021 04:58:47 +0000 (13:58 +0900)]
e_pixmap: do not unset/clear pixmap in e_pixmap_parent_window_set
We've modified code to set the E_Pixmap's parent window only.
If we need to set unusable and clear the pixmap, then we have to call these
functions explicitly.
Change-Id: I190b79c73f1c76eb830c853f7c23138f1c4b5050
Seunghun Lee [Fri, 23 Apr 2021 02:39:01 +0000 (11:39 +0900)]
e_foreign_shell: Fix build error
The flipped transform isn't supported by wtz_foreign protocol.
Change-Id: I31eea013846ed940645e3392f9160b6e037caecd
Seunghun Lee [Fri, 9 Apr 2021 05:41:03 +0000 (14:41 +0900)]
Support wtz-foreign protocol
This is an initial commit to support wtz-foreign protocol.
This is to support out-of-process video playing surface.
wtz-foreign protocol is to enable one client to share its resources to
another client.
The client which exported a reference of foreign shell then can change
attributes - such as size, orientation, and map state - of foreign shell.
So, the client which import a foreign shell can draw its contents onto a
surface without concerning about attributes such as size like as
mentioned.
The e_foreign contains implementation of wtz_exporter and wtz_importer.
And e_foreign_shell contains implementation of wtz_exported_shell and
wtz_foreign_shell.
Change-Id: Idec6194d9b57e3346167eaa4ab6537b4d59c3393
Seunghun Lee [Wed, 21 Apr 2021 09:50:30 +0000 (18:50 +0900)]
e_comp_object: Set an embedded E_Client as comp_object data
When evas_object_data_get(obj, "E_Client") called, it will return
embedded E_Client instead of original E_Client.
This is to hide details of embedded concept.
Specifically, e_hwc_windows implementation will make a visibile window
list with an embedded E_Client, not a container.
Change-Id: I94c850d262c1357eb28f635b2ec3e97ac37c06ba
Seunghun Lee [Wed, 21 Apr 2021 09:34:11 +0000 (18:34 +0900)]
Revert "foreign: Support wtz-foreign protocol"
Since the foreign "surface" concept has been abandoned, the
implementation of e_foreign needs to be re-written.
(See wayland-extension)
So this patch reverts commit
0fab24dfc3e1bef3e6131aa7272cf51cdc81cbb9,
before making a commit to adopt new concept, foreign shell.
Change-Id: I4116dcdb41f1d0f72a7d766c3135c02be95863ca
Changyeon Lee [Tue, 30 Mar 2021 09:40:18 +0000 (18:40 +0900)]
e_comp_object: defaultly use evas_object for input event instead image object
map_input_object is shown for avoiding the event transform by evas_map
which is applied at effect object.
when comp_object is set by unredirect, map_input_object is
hidden even if buffer of client is rotated acoording to screen rotation.
so if client is set by redirect, map_input_object receive input event
and if client is set by unredirect, cw->obj receive input event.
it doesn't have a problem in normal cases because the size of
map_input_object(redirect) and cw->obj(unredirect) are the same size
of window(ec size).
but it has a problem in case of down/up input event
1. down event is signaled and cw->obj receive event
comp_object is unredirect and size of cw->obj is same window size
ex) widow size (1080x1920), cw->obj (1080x1920)
2. comp_object is redirect and map_input_object is shown and
cw->obj is resized according to buffer size(rotated).
ex) window size (1080x1920) cw->obj (1920x1080)
map_input_object(1080x1920)
3. up event is signaled but cw->obj receive event
so evas send input coordinate with current cw->obj size
because evas can't change evas_object which is received between down
and up event
it causes the wrong coordinate of input event is sent to the client.
so map_input_object is renamed default_input_object and
default_input_object use for input event instead image object(cw->obj).
Change-Id: I277c3804c3a2a73d2562cdbdc98cca9dfda40645
Doyoun Kang [Wed, 21 Apr 2021 05:44:53 +0000 (14:44 +0900)]
e_hints: modify code for e_hints_aux_hint_add_with_pixmap
If there exist the aux_hint which has a same ID and its name is not same to the 3rd
parameter (name), then we replace its name and value to new name and value.
Change-Id: I383f45b3518fcbc97a09102c45fb9905eb2dee93
Junseok, Kim [Wed, 14 Apr 2021 03:37:14 +0000 (12:37 +0900)]
e_test_helper: Added timeout set method
Added timeout set method.
It could set/unset timer of Testcase, and can set time of timer.
Change-Id: Ia023a4c8c49329e9ac60fbd6f5112707eaa9251d
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Junseok, Kim [Tue, 13 Apr 2021 07:17:32 +0000 (16:17 +0900)]
e_test_helper: add method for add/del supported_aux_hint
Change-Id: Ie83bbb48b7a3f66a4e70a7f84172d9866bfd2671
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Junseok, Kim [Thu, 1 Apr 2021 07:58:30 +0000 (16:58 +0900)]
e_test_helper: added aux hint changed signal
Added aux hint changed signal to registered test window.
It hooks E_CLIENT_HOOK_AUX_HINT_CHANGE of registered window and send "AuxHintChanged" signal to e-tizen-unittest.
Change-Id: Ib2549682a5c85f5755d82a1e1df45c10dfac8cdf
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Seunghun Lee [Thu, 15 Apr 2021 07:09:06 +0000 (16:09 +0900)]
subsurface: Fix messed up stack order of sub-surface
The stack order of sub-surface sometimes got messed up when re-stacking
main surfaces.
Thinking of the case as an example that placing a surface underneath
another surface that has sub-surfaces, it obviously wasn't enough to
re-arrange sub-surfaces stack order only for E_Client given by restack
callback function.
This patch fixes it by updating stack order not only for given E_Client,
but also for E_Clients neighbored with given E_Client.
Change-Id: I95f11c9998ed4f1729e7ca3583a4f41f5dc4edf8
Seunghun Lee [Thu, 15 Apr 2021 02:38:57 +0000 (11:38 +0900)]
subsurface: Move a handler for updating stack order of subsurfaces
Place it with the other subsurface functions.
Change-Id: I57adb07ef066752e93e6027c43884bb2b0042c04
Junseok, Kim [Mon, 19 Apr 2021 01:47:24 +0000 (10:47 +0900)]
e_policy: send iconify when uniconify_by_vis job canceled
If the client's uniconify job is canceled by the enlightenment, the client's internal
state remains "Uniconic state" till the enlightenment send an iconic state change event.
In this situation, black screen can appear if the client is visible again.
This is because the client know its state is "uniconic" and doesn't render anymore.
To fix this, we add code that enlightenment sends an iconic state change event to client
to change its internal iconic state when the uniconify_by_vis job is canceled.
Change-Id: If2e71769cd622cfdb11aba0c655ea46a35bcb497
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Changyeon Lee [Tue, 13 Apr 2021 09:15:56 +0000 (18:15 +0900)]
e_hwc_windows: fix getting stuck compositing in explicit fence sync
do not release display buffer to queue if window isn't updated
Change-Id: I5d242478b8d092bd06d2ebcea74495b0e3089aa4
Doyoun Kang [Wed, 7 Apr 2021 10:32:05 +0000 (19:32 +0900)]
e_policy_visibility: do not add internal ec in below activity list
If an internal ec is added to the below activity list, then e could get timeout for uniconify
pending job because it does not send buffer attach, damage, commit event.
To prevent timeout, we change code not to add the internal ec (aka made by e or e's module)
in the below activity list.
Change-Id: I6f6e9a2c905e931cfb6bd10bdc6446d8f718095d
Doyoun Kang [Wed, 7 Apr 2021 09:29:43 +0000 (18:29 +0900)]
e_policy: check config before calling e_client_revert_focus when window is lowered
If the e_config's calc_vis_without_effect is set, e doesn't call e_client_revert_focus.
In this case, e_client_revert_focus is called after calculating visibility.
Change-Id: I89a47227a093cce7e6446832889785608a4b82c7
Junseok, Kim [Fri, 2 Apr 2021 07:08:12 +0000 (16:08 +0900)]
e_policy_visibility: do not below_iconify when ec is transparent
No need to below uniconify if the lower / hide window is transparent.
Because of below windows are already uniconic state.
Change-Id: I1c94ae0080e9fd97d075cb6ab7669cfbc13b9b38
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Seunghun Lee [Mon, 5 Apr 2021 06:54:17 +0000 (15:54 +0900)]
e_comp_object: Remove obsolete stacking transform transp object
Now that transform transp object's been added to smart member as a
child(see 4217311), to stack transform transp object with ancestor
object got obsolete.
Change-Id: I6aa421a2dde285559d79af694f682845dc16b526
Seunghun Lee [Mon, 5 Apr 2021 06:41:15 +0000 (15:41 +0900)]
e_comp_object: Fix wrong punch of window due to transp object stack order
The transform transp object's been added to smart member as a child(see
42173111), so it cannot be re-stacked by
"_e_comp_object_transform_obj_stack_update" due to the policy of smart
member objects.
For this reason, transform transp object must be stacked lowest of
children. Otherwise transform transp object will stay above window
contents and then cover contents.
Change-Id: I92293de7e8d98fe5b48e03981cd75663bb679ddd
Doyoun Kang [Fri, 2 Apr 2021 03:53:30 +0000 (12:53 +0900)]
add norender_disable feature
We added a new API
- void e_policy_visibility_norender_disable_set(Eina_Bool disable)
Change-Id: I35c5f1df99701d2dc73a9a07c36ab5e1667e452d
Seunghun Lee [Wed, 10 Mar 2021 08:25:46 +0000 (17:25 +0900)]
e_client: Introduce a way of embdding a client to support wtz_foreign protocol
This is an attempt to embed one E_Client into another E_Client and make
it live in. Thus embbeded E_Client will follow stack order of its
container E_Client automatically by evas smart object.
This patch will be necessary in the future patch to support wtz_foreign
protocol.
Change-Id: I3b0dde95e13aee0ae58275e3afdeb0befd6a37ca
Seunghun Lee [Wed, 10 Mar 2021 08:42:29 +0000 (17:42 +0900)]
e_comp_object: Add transp object as a member object of smart object
Seeing "smart_member_del" when transp object gets deleted, it seems like
transp object is supposed to be a member of smart object. I assume that
it was accidentally left out for some reason.
So, this patch will make transp object member of smart object.
Otherwise, it won't be able to track stack order of parent object if
parent object gets added to another smart object.
Change-Id: If465c24ef46aadf5f5b272354b009ab55e608689
Seunghun Lee [Wed, 10 Mar 2021 08:40:15 +0000 (17:40 +0900)]
foreign: Support wtz-foreign protocol
This is a first commit to support wtz-foreign protocol.
This is to support out-of-process video playing surface.
wtz-foreign protocol is to enable one client to share its surface to
another client.
In addition to just sharing surface, the client which acquires a
reference of exported surface then can change attributes - such as size,
orientation, and map state - of exported surface.
So, the client which export a surface can draw its contents onto a
surface without concerning about attributes such as size like as
mentioned.
The e_foreign contains implementation of wtz_exporter and wtz_importer.
And e_foreign_surface contains implementation of wtz_exported_surface
and wtz_imported_surface.
Change-Id: I9ebe90cb930ba7cfa142b6763395036d21d10072
Duna Oh [Thu, 10 Sep 2020 04:56:49 +0000 (13:56 +0900)]
e_policy_visibility: allow parent window to uniconify when child's
visibility is UNOBSCURED
When parent window is activated, parent should wait for the child to be
uniconify-rendered AND 'UNOBSCURED'.
This commit is to fix a visual defect that the parent window was uniconified
before the child and child was uniconified later.
Change-Id: I4fe0d5b4a6348c413467d8044e1cebf25becc640
Doyoun Kang [Mon, 29 Mar 2021 03:44:19 +0000 (12:44 +0900)]
e_service_quickpanel: fix memery leak
Change-Id: If9db89c4b12c9470a95832cc9ebab5b0474203b2
Doyoun Kang [Mon, 29 Mar 2021 02:34:03 +0000 (11:34 +0900)]
e_module: fix code - using freed resource
We used freed resource(m->name). This patch fixes this error
Change-Id: I577a6c679027adbdd9ed765089fc0e19dfaca907
Changyeon Lee [Tue, 23 Mar 2021 09:43:05 +0000 (18:43 +0900)]
e_hwc_windows: set skip ui if color of window is invisible and render copy
if color of window is invisible and render op is copy,
window located below it is invisible.
in the below case, stack 2 window isn't added to visible window list
after this patch is applied.
stack window
1 24bit transparent internal window(render copy and full size)
2 skip iconify window (evas object is shown)
Change-Id: Ie161f9a8095fac35febd1da19c1399aa55307b12
Junseok, Kim [Thu, 25 Mar 2021 05:06:48 +0000 (14:06 +0900)]
e_comp_wl: add log for argb value changes
All of ec->argb assignments are print their change log except here.
So, added log for argb value changes for easy debugging.
Change-Id: I0e583159d3d81f55b7c7f65ed1e4711053f888fe
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Changyeon Lee [Wed, 24 Mar 2021 08:09:33 +0000 (17:09 +0900)]
e_explicit_sync: Fix error duplicate release in buffer flush state
In buffer flush state, buffer of client is unreferenced before
e_explicit_sync_surface_commit is called.
it causes error duplicate release because pending_buffer_release is
existed even if client call wl_surface_commit.
so this patch call e_explicit_sync_surface_commit before e_pixmap_buffer_clear
and destroy pending_buffer_release if client doesn't reference buffer.
Change-Id: I204ae447305aaa3fd8102a94665c05e6fca04a4f
JunSeok Kim [Wed, 24 Mar 2021 07:20:05 +0000 (07:20 +0000)]
Revert "Remove e_client_transform_core_update in e_client_transform_core_remove"
This reverts commit
039398c93cd6daaff369577df55133aabd9e96c5.
Reason for revert: This patch will re-commit with related module patch
Change-Id: Ifab1a7297771d718a7708ac3e8f70c7e20f5eb7e
Changyeon Lee [Fri, 12 Mar 2021 04:05:58 +0000 (13:05 +0900)]
e_hwc_window_queue: use list instead of hash for managing queue
iterator object can't be deleted in EINA_ITERATOR_FOREACH.
it can cause a crash.
so e_hwc_widow_queue use list instead of hash
Change-Id: Ic2ca95a6ba16de0feb12458a7b1cc4ef3a06aed4
Doyoun Kang [Thu, 11 Mar 2021 05:38:30 +0000 (14:38 +0900)]
Remove e_client_transform_core_update in e_client_transform_core_remove
When we change or replace some transform (remove old transform and add new transform),
there was an unnecessary calculation for removing old transform because of calling
e_client_transform_core_update in e_client_transform_core_remove().
So, we remove e_client_transform_core_update in e_client_transform_core_remove.
FYI,
e_client_transform_core_update is called in idler_before handler(exactly _e_client_eval).
If we want to apply transform immediately, we have to call e_client_transform_core_update
after calling e_client_transform_core_remove.
Change-Id: I17b2cbb360769ca69793d6ca55cffab4178feba4
Doyoun Kang [Wed, 10 Mar 2021 08:03:22 +0000 (17:03 +0900)]
e_client/e_comp_wl: set role information for each transform
We use a E_Util_Transform to apply various transform.
However, there was no way to know what purpose of each transform that
was applied to E_Client.
This patch sets the role to below transforms.
- viewport_transform
- base_output_resolution
- desk_group
Change-Id: Ia8f47c603767744e6ca0ca324ccca9f9f82a37b5
Doyoun Kang [Wed, 10 Mar 2021 07:40:18 +0000 (16:40 +0900)]
e_info_client/server: add role option for transform test
Change-Id: Ia490960df2e2cb7a83645a0e7c7476b8a863cb8c
Doyoun Kang [Tue, 9 Mar 2021 06:49:47 +0000 (15:49 +0900)]
e_info_server: print role for transform information
Change-Id: Icee19d85575ba237cf6461ea53bae6d9085c3a60
Sung-Jin Park [Mon, 8 Mar 2021 20:49:42 +0000 (05:49 +0900)]
e_comp_wl: skip sending touch cancel even for a 'video' ec
In _e_comp_wl_surface_state_commit(), there is a process of applying a new map
information to the ec if the viewport information of a given ec's buffer is changed.
Before applying the map information, if a touch down or move event is being sent to
the ec, we usually send a touch cancel event to it. This is done to prevent the
dramatic changes of touch event coordinates before and after applying
map information.
By the way, if the given ec is a 'video' ec, we must not send a touch
cancel event as the video ec itself doesn't get touch event(s).
The other ec which contains the video ec will be the touch event(s)
instead. Therefore we must not send a touch cancel to the 'video' ec.
Change-Id: I433329b226d5d268b96fe79572a6927198fc4d0e
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
Seunghun Lee [Wed, 3 Mar 2021 07:54:53 +0000 (16:54 +0900)]
video: Hide a video view if dst size is zero
The function _e_video_hwc_tdm_viewport_clip() crops viewport of video
to fit it into screen, and the dst size of tdm gets zero if viewport
of video is out of the screen.
However, setting dst size to zero is highly likely to be treated as
illegal. That means applying the change would be failed and former
changes would finally be kept.
Since setting destination size to zero implies that it should be hidden,
thus this patch makes video implementation hide a video view if dst size
of tdm is zero.
Change-Id: Iae5a86e8dcbb6b13306ee72d4aef11fac139c3d4
Seunghun Lee [Fri, 19 Feb 2021 07:21:33 +0000 (16:21 +0900)]
e_policy_wl: Raise a protocol error for a request with invalid parent
The E crashed with null pointer access to comp_data of
sub-surface's parent in _e_comp_wl_subsurface_order_commit() function.
And it turned out that the parent was an internal window created by E.
But the internal window cannot be the parent of sub-surface
theoretically. So, it is possible for wl_client to try to create
sub-surface with invalid resource ID for parent using
tizen_policy::get_subsurface protocol.
So, this patch will raise a protocol error for that case to get it
failed early.
Change-Id: I98351de962e3ea8cf5b8d218a858859929b0da5d
Changyeon Lee [Tue, 16 Feb 2021 07:17:10 +0000 (16:17 +0900)]
e_comp_wl_remote: add override when saving image
e_comp_wl_remote_surface_image_save is called in unmap of surface
so add override at e_comp_wl_remote_surface_image_save
Change-Id: I0bf66b3afbdc917f742969bd013253d3b6e53b89
Changyeon Lee [Mon, 8 Feb 2021 03:33:03 +0000 (12:33 +0900)]
e_hwc_windows: set transition if window has transtion and client state
fix flickering this case
1. A window set device state and unredirect
2. target window render frame which doesn't have A window frame
3. A window set client state before hwc state isn't accepted
4. target window commit gl compositing frame, but flickering
is occurred because 2 step frame doesn't have A Window
Change-Id: Icd8cbf102d21e73a769bb3392fc9dc5b7b2adec8
Doyoun Kang [Wed, 17 Feb 2021 08:03:38 +0000 (17:03 +0900)]
e_comp_object: fix typo
Change-Id: If15c0ec51403430c2448972bc2af0abb668eddfb
Doyoun Kang [Wed, 17 Feb 2021 07:13:45 +0000 (16:13 +0900)]
e_client/e_comp_object: add log for debug information
Change-Id: I569390da409c065faecbe1fe6a600dd2c75a1b3a
Junseok, Kim [Mon, 8 Feb 2021 12:38:34 +0000 (21:38 +0900)]
e_service_quickpanel: change focus set method to latest_set for ensure qp is focusable
To ensure quickpanel is focusable, use e_client_focus_latest_set for give focus to quickpanel instead of e_client_frame_focus_set.
and added condition check of quickpanel's evas_object is visible.
Change-Id: I043de2f002d562b4019ef70b40fb7df1d820f12f
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Junseok, Kim [Mon, 8 Feb 2021 12:37:20 +0000 (21:37 +0900)]
e_client: check ec is in the Zone while focusable check
Change-Id: Ibff341d0b57d9bc07022d794d11c135dd3447072
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
Seunghun Lee [Wed, 10 Feb 2021 04:55:40 +0000 (13:55 +0900)]
video: Fix crash when commit video buffer with null resource
The resource of surface can be null, and it led segfault.
Change-Id: I61cd033f9c9f37d10929e5ca3741780e3e256cbf
Junseok, Kim [Thu, 28 Jan 2021 10:05:08 +0000 (19:05 +0900)]
e_service_quickpanel: don't send ignore_output_transform
Change-Id: I0c4ae232e958502d375b3f1396944200e0fa95b6
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>